如果我们有一个默认参数设置为None的类,如果它们是None,我们如何忽略它们,如果它们不是(或者至少其中一个不是None),我们如何使用它们?
class Foo:
def __init__(self, first=1, second=2, third=3, fourth=None, fifth=None):
self.first = first
self.second = second
self.third = third
self.fourth = fourth
self.fifth = fifth
self.sum = self.first + self.second + self.third + self.fourth + self.fifth
return self.sum
>>> c = Foo()
Traceback (most recent call last):
File "<pyshell#120>", line 1, in <module>
c = Foo()
File "<pyshell#119>", line 8, in __init__
self.sum = self.first + self.second + self.third + self.fourth + self.fifth
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
答案 0 :(得分:0)
def __init__(self, first=1, second=2, third=3, fourth=None, fifth=None):
if first is None:
first = 0
else:
self.first = first
然后它将添加零而没有副作用而不是None
您还可以更改添加它们的部分并首先测试None
,但这可能更少输入。
答案 1 :(得分:0)
class test(object):
def __setitem__(self, key, value):
if key in ['first', 'second', 'third', 'fourth', 'fifth']:
self.__dict__[key]=value
else:
pass #or alternatively "raise KeyError" or your custom msg
def get_sum(self):
sum=0
for x in self.__dict__:
sum+=self.__dict__[x]
return sum
nk=test()
nk['first']=3
nk['fifth']=5
nk['tenth']=10
print nk.get_sum()
输出:
>>> 8