【发布时间】:2013-08-10 04:43:43
【问题描述】:
当我的类被子类化时,有没有办法触发代码?
class SuperClass:
def triggered_routine(subclass):
print("was subclassed by " + subclass.__name__)
magically_register_triggered_routine()
print("foo")
class SubClass0(SuperClass):
pass
print("bar")
class SubClass1(SuperClass):
print("test")
应该输出
foo
was subclassed by SubClass0
bar
test
was subclassed by SubClass1
【问题讨论】:
-
使用元类;创建类时调用元类,就像创建实例时调用类一样。
-
无法添加答案,但今天 python3.6 有
__init_subclass__- 看看吧! -
@OrDuan:谢谢,听起来很有用。甚至可能有足够的理由取消将此问题标记为重复项,因为现在有一个专门的解决方案可以解决我的问题,而不是“使用元类”解决方案。
标签: python inheritance