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

2024-09-30 04:34:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经搜索了所有相关的这个问题,但它不满足我的问题。你知道吗

你知道吗基本处理程序.py你知道吗

class BaseHandler(object):

    def __init__(self, rHandler, path, param):
            self._rHandler = rHandler
            self._server = self._rHandler.server
            self._path = path
            self._param = param

    def _getElement(self, name):
        return name + "append"

你知道吗我的班级.py你知道吗

class MyClass(BaseHandler.BaseHandler):

    def getA(self):
        print "Some info"

    def getB(self):
        el = self._getElement("T") #baseclass method
        print ebl

我想从下面的班级打电话给getB。你知道吗

你知道吗阅读.py你知道吗

import MyClass
class RThread(object):

    def someMethod(self):
        clr = MyClass.MyClass
        clr.getB()

我得到以下错误:

TypeError: unbound method getB() must be called with MyClass instance as first argument (got nothing instead)

当我尝试以下操作时:

clr = MyClass.MyClass()

我得到以下错误:

init() takes exactly 4 arguments (1 given)

所以请帮助我如何从不同的类调用这个方法。你知道吗


Tags: pathpyselfobjectserverparaminitdef
2条回答

你需要实例化这个类以便调用它的方法。你知道吗

def someMethod(self):
    clr = MyClass.MyClass(*args)
    clr.getB()

如果希望方法可以从类调用,则需要使用@staticmethod@classmethod

@staticmethod
def getB():
    return self._getElement("T")

但是,您使用的是需要实例的self.表示法。因此,还需要用@staticmethod标记_getElement方法。静态方法无权访问父类。您可以使用@classmethod修饰符来完成此操作。你知道吗

@classmethod
def getB(cls):
    return cls._getElement("T")

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

clr = MyClass.MyClass()

因为MyClassBaseHandler继承,并且您没有重写它的构造函数,所以您使用的是来自BaseHandler的构造函数,它有四个参数,其中一个是self。你知道吗

def __init__(self, rHandler, path, param):
    ...

所以,试试这个:

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

相关问题 更多 >

    热门问题