Python:从另一个类调用派生类方法

Python:从另一个类调用派生类方法,python,class,derived,Python,Class,Derived,我已经搜索了所有与此stackoverflow问题相关的文档,但它不能满足我的问题 BaseHandler.py 类BaseHandler(对象): 定义初始化(self,rHandler,path,param): self.\u rHandler=rHandler self.\u server=self.\u rHandler.server self.\u路径=路径 自身参数=参数 定义元素(自身,名称): 返回名称+“追加” MyClass.py class MyClass(BaseHan

我已经搜索了所有与此stackoverflow问题相关的文档,但它不能满足我的问题

BaseHandler.py

类BaseHandler(对象):
定义初始化(self,rHandler,path,param):
self.\u rHandler=rHandler
self.\u server=self.\u rHandler.server
self.\u路径=路径
自身参数=参数
定义元素(自身,名称):
返回名称+“追加”
MyClass.py

class MyClass(BaseHandler.BaseHandler):
def getA(自我):
打印“一些信息”
def getB(自我):
el=self._getElement(“T”)#基类方法
打印ebl
我想从下面的班级打电话给getB

RThread.py

导入MyClass
类RThread(对象):
定义方法(自我):
clr=MyClass.MyClass
clr.getB()
我得到以下错误:

当我尝试以下方法时:

clr = MyClass.MyClass()
我得到以下错误:

init()只接受4个参数(给定1个)


因此,请帮助我如何从不同的类调用此方法。

您没有正确调用此方法;您需要创建一个对象。这就是您创建对象的方式,这就是您所做的,只是您没有传递足够的参数

clr = MyClass.MyClass()
由于
MyClass
继承自
BaseHandler
,并且您没有重写它的构造函数,因此您使用的是
BaseHandler
中的构造函数,它有四个参数,其中一个参数是
self

def __init__(self, rHandler, path, param):
    ...
那么,试试这样的方法:

clr = MyClass.MyClass(arg1, arg2, arg3)
clr.getB()

您需要实例化该类,以便对其调用方法

def someMethod(self):
clr=MyClass.MyClass(*args)
clr.getB()
如果希望该方法可以从类中调用,则需要使用
@staticmethod
@classmethod

@staticmethod
def getB():
返回自我。_getElement(“T”)
但是,您使用的是需要实例的
self.
表示法。因此,还需要将
\u getElement
方法标记为
@staticmethod
。静态方法无权访问父类。您可以使用
@classmethod
装饰器来完成此操作

@classmethod
def getB(cls):
返回cls.\u getElement(“T”)

缩进是否正确?从外观上看,您在任何类中都没有任何内容。您的思路是正确的:您只需要一个有效的
MyClass
实例即可。由于
MyClass
不重写
\uuuuu init\uuuuu
,请查看
BaseHandler.\uuuuuu init\uuuuuu
以查看所需的参数。@VaibhavSharma抱歉,我的缩进不正确。我不擅长在stackoverflow上编写脚本。@chepner baseHandler也是基类的派生类(继续)。BaseHandler的一个参数来自基类。如何处理此问题?
BaseHandler.\uuuu init\uuuu
的类型签名是对您的目的唯一重要的东西。它对参数的处理是它自己的事情。有点吹毛求疵,但是有一个名为
self
的参数并不意味着你需要一个实例-这个名
self
没有什么特别之处,只是习惯用它在方法中绑定实例。
clr = MyClass.MyClass(arg1, arg2, arg3)
clr.getB()