私はモデルモデルを持っているDjangoプロジェクトに取り組んでいます。オブジェクトメソッドを反復処理してフィルタリングする方法は?
このモデルには、属性、メソッド、サブクラスがあります。私は反復し、 "統計"属性でメソッドを取得したい。だから、
:
class Model(models.Model):
name = ...
def dont_want(self):
return 'foo'
def want(self):
statistic = True
return self.name
def want_too(self):
statistic = True
return self.name
def get_methods_with_statistic_attribute(self):
# WHAT TO DO
return methods
model = Model(name='Peter')
for method in model.get_methods_with_statistic_attribute():
print method
>>> 'Peter'
>>> 'Peter'
が、それは可能ですか?
は、私が試した:return [a for a in dir(self) if hasattr(getattr(self,a),'statistic')]
を成功せず。
EDIT:
この問題は、私はここに尋ねたより具体的なDjangoの問題への解決策になることができます:
Django - is it possible to iterate over methods?
技術的には、getattr(self、a).__ func __.__ code __。co_varnames'で 'statistic 'のようなことをして' statistic'というローカル変数を持つメソッドを見つけることができますが、機能の内部で使用されることも、これはすべて推奨されていません。 –