セッターとゲッター@propertyのよりpythonishな方法を使用するように指示されました。したがって、次のようなものがあります。
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'] で、最初は期待していませんでしたが、実際には理にかなっています。
問題は、メソッドの名前ではなく、すべてのプロパティ名を取得する方法です。何か案は?