あなたの実際の問題は、あなたのインスタンスメソッドgreet
を定義しているということであるとして:Pythonで
def greet(name, other_name):
インスタンスメソッドは、あなたのメソッド定義の最初の引数としてinstance
を取ります。今ここでやっていることは、そのインスタンスをname
と呼んでいます。ただし、クラスの__init__
では、self
を使用してインスタンスオブジェクトを参照しています。これがあなたの主な問題が起こっている場所です。
あなたが実際にあなたのメソッドを呼び出すしようとすると、あなたが最も可能性が高い。このようなことになっているので、:だから
Hi bob, my name is <__main__.Person object at 0x1018ff2b0>
を、あなたが実際にあなたのPerson
クラスのインスタンスオブジェクトをプリントアウトしています。再び、この名前はname
です。それはself
のようなものです。
ここで修正する必要があるのは2つあります。最初に、インスタンスオブジェクト名を一貫して維持するために、インスタンスgreet
メソッドを適切に定義する必要があります。
def greet(self, other_name):
次に、あなたのインスタンスを参照する必要があなたのインスタンスを参照し、そのオブジェクトから属性へのアクセス属性:
だから、あなたはあなたのgreet
方法でname
にアクセスしたい、それがようである必要がありますself.name
。だから、
:
"Hi {0}, my name is {1}".format(other_name, self.name)
このすべてのより良い理解を持っている、あなたはクラスがPythonでどのように機能するかについての詳細をお読みください。ここにチュートリアルのセクションがあります:
https://docs.python.org/3/tutorial/classes.html
正確には機能しないものはありますか?サンプルの使用方法をご提供ください –
*どうしてこの作品が*読者にはあまり役に立ちませんか?正確にはうまくいかないことを説明する必要があります。あなたは何が起こるべきか、そうではないと思います。 – idjaw