Python: 从另一个 class 调用派生的 class 方法
Python: Call derived class method from another class
我已经搜索了所有相关的这个 Whosebug 问题,但它不满足我的问题。
BaseHandler.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"
MyClass.py
class MyClass(BaseHandler.BaseHandler):
def getA(self):
print "Some info"
def getB(self):
el = self._getElement("T") #baseclass method
print ebl
我想从下面调用 getB class。
RThread.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)
请帮助我如何从不同的 class.
调用此方法
您没有正确调用该方法;你需要创建一个对象。这就是您创建对象的方式,这就是您正在做的事情,只是您没有传递足够的参数。
clr = MyClass.MyClass()
由于 MyClass
继承自 BaseHandler
而您没有重写其构造函数,因此您使用的是 BaseHandler
的构造函数,它有四个参数,其中一个是 self
.
def __init__(self, rHandler, path, param):
...
所以,尝试这样的事情:
clr = MyClass.MyClass(arg1, arg2, arg3)
clr.getB()
您需要实例化 class 才能对其调用方法。
def someMethod(self):
clr = MyClass.MyClass(*args)
clr.getB()
如果您希望方法可以从 class 调用,您需要使用 @staticmethod
或 @classmethod
@staticmethod
def getB():
return self._getElement("T")
但是,您正在使用需要实例的 self.
表示法。因此,您还需要使用 @staticmethod
标记 _getElement
方法。静态方法无法访问父级 class。您可以使用 @classmethod
装饰器来做到这一点。
@classmethod
def getB(cls):
return cls._getElement("T")
我已经搜索了所有相关的这个 Whosebug 问题,但它不满足我的问题。
BaseHandler.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"
MyClass.py
class MyClass(BaseHandler.BaseHandler):
def getA(self):
print "Some info"
def getB(self):
el = self._getElement("T") #baseclass method
print ebl
我想从下面调用 getB class。
RThread.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)
请帮助我如何从不同的 class.
调用此方法您没有正确调用该方法;你需要创建一个对象。这就是您创建对象的方式,这就是您正在做的事情,只是您没有传递足够的参数。
clr = MyClass.MyClass()
由于 MyClass
继承自 BaseHandler
而您没有重写其构造函数,因此您使用的是 BaseHandler
的构造函数,它有四个参数,其中一个是 self
.
def __init__(self, rHandler, path, param):
...
所以,尝试这样的事情:
clr = MyClass.MyClass(arg1, arg2, arg3)
clr.getB()
您需要实例化 class 才能对其调用方法。
def someMethod(self):
clr = MyClass.MyClass(*args)
clr.getB()
如果您希望方法可以从 class 调用,您需要使用 @staticmethod
或 @classmethod
@staticmethod
def getB():
return self._getElement("T")
但是,您正在使用需要实例的 self.
表示法。因此,您还需要使用 @staticmethod
标记 _getElement
方法。静态方法无法访问父级 class。您可以使用 @classmethod
装饰器来做到这一点。
@classmethod
def getB(cls):
return cls._getElement("T")