如何将子函数导入到同一个类中,而父函数使用父类中的函数?

问题描述 投票:0回答:1

我有两个名为 ParentChild(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)

python oop inheritance
1个回答
0
投票

这不会实例化新的子对象。

        self.obj=Child

此时,当然,您有一个

object
, 但它是一个
class
对象, 而不是
Child()
实例。

这很奇怪:

        self.obj.fnfromchild(self)

您调用的函数期望接收一个

Child
实例 作为其
self
参数。 但你给它喂了一个
Parent
实例?!?

考虑让调用者传入

Child()
实例 致家长
__init__
ctor。 父母不应该真正了解孩子; 依赖关系应该是相反的。

您提出了 XY 问题。 如果您告诉我们您真正关心的问题,将会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.