クラスメソッドとして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
オブジェクトを持っていて、オブジェクトの内容を見れば、あなたは何をあなたを持っているでしょうあなたのインスタンスのプロパティから期待します。
[コードレビュー](http://codereview.stackexchange.com/)にコードを掲載することをお勧めします。そこに対処できる多くの点があります。 –
ZachGatesのコメントをフォローしている場合は、コードが動作するまで投稿しないようにしてください。 – zondo