当前位置: 代码迷 >> python >> 不传递任何属性会导致崩溃
  详细解决方案

不传递任何属性会导致崩溃

热度:11   发布时间:2023-07-14 08:58:17.0

我使用属性来获取/设置类中的变量,但是当变量设置为None时,下次设置变量时程序崩溃-如以下代码所示:

class Abc(object):
    def __init__(self, a=None):
        self.a = a

    def set_a(self, value):
        self._a = value*5

    def get_a(self):
        return self._a

    a = property(get_a, set_a)

A = Abc()
A.a = 4
print A.a

当我运行它时,我得到:

Traceback (most recent call last):
  File "<string>", line 13, in <module>
  File "<string>", line 3, in __init__
  File "<string>", line 6, in set_a
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

编写代码来阻止此错误发生的正确方法是什么?

设置self._a ,而不是self.a 后者使用属性设置器:

class Abc(object):
    def __init__(self, a=None):
        self._a = a

或改用数字默认值:

class Abc(object):
    def __init__(self, a=0):
        self.a = a
  相关解决方案