目标:创建一个装饰器,可以修改其所使用的作用域。
如果它起作用:
class Blah(): # or perhaps class Blah(ParentClassWhichMakesThisPossible)
def one(self):
pass
@decorated
def two(self):
pass
>>> Blah.decorated
["two"]
为什么这么做?我希望编写能够维护特定方法字典的类,以便可以按类别检索不同类型的可用方法列表。
我想做到这一点:
class RuleClass(ParentClass):
@rule
def blah(self):
pass
@rule
def kapow(self):
pass
def shazam(self):
class OtherRuleClass(ParentClass):
@rule
def foo(self):
pass
def bar(self):
pass
>>> RuleClass.rules.keys()
["blah", "kapow"]
>>> OtherRuleClass.rules.keys()
["foo"]
inspect.getmembers
,就可以处理继承 - 然后我可以删除我的答案,因为它大部分是重复的(不出所料;-),但您的答案更完整。 - Alex Martelli