【Python】一个类的__init__中的if-else语句永远只会返回else对应的结果是什么情况?
如下:
class loan(object):
def __init__(self, term=None , rate=None, face=None, asset=None):
if isinstance(asset, Asset) or asset is None:
self._asset = asset
self._term = float(term) if term is not None else 1
# replace the yearly rate into monthly rate
self._rate = loan.monthlyRate(rate) if rate is not None else 0
else:
print('Error: parameter "asset" should be an Asset object or its derivatives')
我想达成的效果是【如果asset没有被输入或者asset属于Asset这个类,就开始初始化,否则报错】,但我运行以下代码时永远都是返回else对应的情况:
from Loan.loan import loan
from assets.assets import Asset
myAsset = Asset(20000)
#情况1,输入asset是个数值,返回报错
print('Test the result if asset parameter is NOT an Asset class')
myLoan = loan(36,0.03,18000,20000)
#=====问题所在======
#情况2,输入的asset是个asset类,却依然返回报错
print('Test the result if asset parameter IS an Asset class')
myLoan = loan(36,0.03,18000, myAsset)
但是我单独测试if条件判断却返回的是True
print(isinstance(myAsset, Asset) or myAsset is None)
#返回True
请问这是什么情况TT
1、init里可以用if
2、下面语句里第四个参数应该传入对象,而不是数值20000,你检查是否为对象,却传入数值,当然每次都不对啦。
myLoan = loan(36,0.03,18000,20000)
不会吧,我这边用手机运行也可以的
看上去没的问题,断点调试一下看看
其实,你这个问题没意义(因为写肯定可以的),因为这看你想怎么实现一个功能了,比如你传人一个参数,想在初始化的时候检查这个参数是否符合你的想法,你就可以写