1

如果我们有一个类有几个默认参数设置为 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'
4

2 回答 2

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首先进行测试,但这可能会减少打字。

于 2012-11-21T12:13:35.680 回答
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
于 2012-11-21T14:38:12.543 回答