[英]python dictmixin object with property decorator
我被指示使用更多的Python的setter和getters @property方法。 所以我们有这样的事情:
from UserDict import DictMixin
class A(dict):
def __init__(self, a, b):
self.a = a
self.b = b
@property
def a(self):
return self._a
@a.setter
def a(self, value):
self._a = value
def __getitem__(self, key):
return getattr(self, key)
def __setitem__(self, key, value):
setattr(self, key, value)
def keys(self):
return [k for k in self.__dict__.keys() if not k.startswith('_')]
def do_whatever(self):
pass
a = A(1,2)
print a.keys()
输出是['b'],起初我没想到这一点,但这实际上是有道理的。
问题是如何获取所有属性名称,而不是方法名称。 有任何想法吗?
属性被实现为描述符 ,因此属于类而不是实例 :
>>> class Question(object):
... @property
... def answer(self):
... return 7 * 6
...
>>> q = Question()
>>> q.answer
42
>>> q.__dict__
{}
>>> for key, value in Question.__dict__.iteritems():
... if isinstance(value, property):
... print key
...
answer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.