【发布时间】:2014-07-29 13:21:15
【问题描述】:
例如,如果我创建类 Foo,然后派生子类 Bar,我希望 Foo 的 myCode() 方法运行。
class Foo(object):
x = 0
def __init__(self):
pass
def myCode(self):
if(self.x == 0):
raise Exception("nope")
class Bar(Foo): #This is where I want myCode() to execute
def baz(self):
pass
这应该在任何类从基类 Foo 派生时发生。是否有可能在 Python 中做到这一点?如果重要的话,我正在使用 Python 3。
注意:在我的真实代码中,Foo实际上是一个抽象基类。
编辑:我还需要访问myCode() 中的派生类成员数据和方法。
【问题讨论】:
-
查找元类。这需要一些技巧才能让 Foo “告诉”元类在子类化时要调用它。如果您尝试元类解决方案,您可能会更好地提出更具体的问题。
-
我实际上正在为我的 Foo 类使用“abc”库中的抽象基类,我查看了相关文档,但它似乎对我想要的东西没有帮助虽然做。我不确定抽象类和元类之间的区别是什么,但我会研究一下。
-
你到底想让
myCode做什么? -
您希望将什么“self”参数传递给
myCode? -
在此用例中,
myCode()将检查派生类的实现,以确保与应使用父类的派生实例的方式一致。 Tldr:我需要能够访问myCode()中的派生类成员数据,例如。self.x。我不确定如何用灰色衬衫的回答来做到这一点。
标签: python class oop python-3.x