您正試圖訪問您的output
方法(這是一種實例方法)作爲類方法。由於第一個參數self
是實例對象,因此消息即將出現,因此您傳遞class
作爲第一個參數實際上會更改self
應該具有的實例對象的內容。這就是信息試圖告訴你的。所以,你居然應該做的是調用該方法作爲實例方法:
Parent().output(self.text)
基於你在做什麼,如果你檢查output
方法中的self
對象的repr
和內容,你得到這樣的:
def output(self, param1):
print(repr(self))
print(dir(self))
print(param1)
使用調用這個方法:Parent.output(Parent, self.text)
<class '__main__.Parent'>
[
'Child', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__',
'__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', '__weakref__', 'output', 'run'
]
正如您所見,您的self
中沒有instance
的Parent
。現在
,如果你把它作爲一個實例方法:Parent().output(self.text)
<__main__.Parent object at 0x1021c6320>
[
'Child', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__',
'__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref__', 'child', 'output', 'run', 'text'
]
正如你所看到的,你現在有一個Parent
對象,如果你看一下對象的內容,你將有你將期望從您的實例屬性。
我會推薦在[Code Review](http://codereview.stackexchange.com/)上發佈你的代碼。這裏有很多可以解決的問題。 –
如果您關注ZachGates的評論,請確保在發佈代碼之前不要發佈它。 – zondo