一个class中__init__可以使用if语句吗(Python)

【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)

不会吧,我这边用手机运行也可以的

img

看上去没的问题,断点调试一下看看

img

其实,你这个问题没意义(因为写肯定可以的),因为这看你想怎么实现一个功能了,比如你传人一个参数,想在初始化的时候检查这个参数是否符合你的想法,你就可以写