繁体   English   中英

带有属性装饰器的python dictmixin对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM