我想調用另一個類的類的方法。我想要做這樣的事情。如何從另一個類調用一個類的方法?
class A:
def meth(self):
B.meth1()
class B:
def meth1(self):
pass
a = A()
a.meth()
我得到以下錯誤:
TypeError: unbound method meth1() must be called with B instance as first argument (got nothing instead)
我在做什麼錯?
更新:
上面的例子是可能有點模糊。這就是我究竟打算做:
class A:
def meth(self, data):
if data[0] == '/':
B.handleCOMMAND(data)
class B:
def handleCOMMAND(self, data):
"""
Some code to handle some command.
"""
更新2:
class A:
def meth(self, data):
if data[0] == '/':
B.handleCOMMAND(data)
class B:
def __init__(self):
self.state = 'CHAT'
def handleCOMMAND(self, data):
if data.strip().split()[1] == 'send':
self.state == 'RECV-FILE'
我面臨的主要問題是:
'self.state' 是一個實例變量類B.根據類A的meth()的數據獲取,需要調用B類的句柄COMMAND,它應該改變'self.state'的值。
你想要的效果是什麼?通常情況下,'B'方法需要一個'B'實例來工作,但是如果你從'A'調用,那麼你沒有'B'實例。 (如果'B.meth1'不需要實例,則改爲classmethod,如果它甚至不需要該類,則將其從類中取出並使其成爲函數。) – BrenBarn 2013-04-23 20:28:56
如果您只是希望能夠爲A類使用B類方法之一,您應該爲此使用[inheritance](http://docs.python.org/2/tutorial/classes.html)。這是你想要的嗎? – 2013-04-23 20:32:05
也許你想'B.meth1'成爲'staticmethod'?沒有更多細節,確實很難知道任何事情。 – mgilson 2013-04-23 20:32:09