我有两个名为 Parent 和 Child(Parent) 的课程。我需要调用父类函数,该函数使用名为 fnfromchild 的子函数,子函数使用名为 to_check 的相同子类函数,但出现如下图所示的错误:
我在调用
self.to_check(self)
时使用以下方法产生问题
class Parent:
def __init__(self,param1):
self.param1=param1
self.obj=Child
print("init_from_parent")
pass
def fnfromparent(self):
print(self.param1)
self.obj.fnfromchild(self)
pass
class Child(Parent):
def __init__(self):
super.__init__(self)
print("init_from_child")
def fnfromchild(self):
self.to_check(self)
print("fnfromchild")
def to_check(self):
print("check1")
if __name__=="__main__":
Parent("text").fnfromparent()
我也尝试过没有自我的
self.to_check(self)
。
这不会实例化新的子对象。
self.obj=Child
此时,当然,您有一个
object
,
但它是一个 class
对象,
而不是 Child()
实例。
这很奇怪:
self.obj.fnfromchild(self)
您调用的函数期望接收一个
Child
实例
作为其 self
参数。
但你给它喂了一个Parent
实例?!?
考虑让调用者传入
Child()
实例
致家长__init__
ctor。
父母不应该真正了解孩子;
依赖关系应该是相反的。
您提出了 XY 问题。 如果您告诉我们您真正关心的问题,将会有所帮助。