对于字典,我们可以使用.get
方法。一个类的属性和提供一个默认值呢?
问问题
10718 次
2 回答
2
这很简单:使用关键字参数。
>>> class Foo(object):
... def __init__(self, my_foo=None):
... self.my_foo = my_foo
...
>>> f = Foo()
>>> f.my_foo
>>> repr(f.my_foo)
'None'
>>> f2 = Foo(2)
>>> f2.my_foo
2
如果您正在寻找一个在设置之前没有属性的对象,那么 Jason 的想法非常好,除非您直接引用该属性。你必须解决AttributeError
你会得到的问题。就个人而言,我不喜欢创建必须经常被try
/except
块包围的对象,只是为了不设置实例属性。
Python 不适合 getter 和 setter。但是,您可以使用property()
来解决此问题:
>>> class Foo(object):
... def __init__(self):
... pass
... def get_my_foo(self):
... return getattr(self, "_my_foo", "there's no my_foo")
... def set_my_foo(self, foo):
... self._my_foo = foo
... my_foo = property(get_my_foo, set_my_foo)
...
>>> f = Foo()
>>> f.my_foo
"there's no my_foo"
>>> f.my_foo = "foo!"
>>> f.my_foo
'foo!'
如果您愿意,也可以调用get_my_foo
and 。set_my_foo
另一个好处是,您可以省略 setter 来创建只读属性,前提是使用您的对象的人不会更改底层的_my_foo
.
于 2013-08-06T18:14:52.213 回答