【发布时间】:2017-04-25 06:25:38
【问题描述】:
我正在开发一个 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')]
没有成功。
编辑:
这个问题可以解决我在这里提出的更具体的 Django 问题:
【问题讨论】:
-
技术上,您可以通过执行类似
'statistic' in getattr(self,a).__func__.__code__.co_varnames之类的操作来找到其中定义了一个名为statistic的局部变量的方法,但这不会告诉您它在函数内部的用途,也不是在全部推荐。
标签: python python-2.7 class methods