Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。257件42下記のコードで、self.nがインスタンス変数として定義されてるのは理解できるのですが、なぜother.nが定義されてないのにこのコードはしっかりと動くのか教えてください。初心者ですがよろしくおねがいします。AlwaysPositive(10)この記述によってy.nに10がセットされます。x+yこの記述によって、xはAlwaysPositive型であるので、AlwaysPositive型の__add__メソッドが呼び出されます。問題なのはxとyの型にはどのような制約がかかっているかです。y(other)もAlwaysPositive型でなければならないと考えるかもしれませんが実際はy.nを持てば動きます。5が返る一方でy=15などとして、y.nを持たないような値に対してx+yを実行しようとしても実行時エラーを返します。動的型付け言語におけるダックタイピングpythonなどの動的型付け言語においては、otherに対して強い型制約を要求しません。otherがnという属性を持つのであればそれにアクセスし、それで計算不能になるならば実行時エラーを出すという柔軟な取り扱いをします。このようなotherがother.nを持つならばどのような型でもよいという性質のことをダックタイピングと呼ぶことがあります。fujitaさんの回答の前半をもう少し噛み砕いてみました。AlwaysPositive(-20)AlwaysPositiveクラスの__init__が呼び出されてx.n=-20であるxが定義されました。yの結果が表示されます。yを計算するためにAlwaysPositiveクラスの__add__が呼び出されます。y.n)が返ってきます。いうわけでこの場合other.nはしっかりと定義されています。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。公開5周年をお祝いしましょう!🌸コメントで回答する理由を教えてください関連する質問1Djangoで現在時刻をデータベースに保存したい。0__init__が呼び出されずAttributeErrorと表示される。0flaskを用いてWordNetで得られる文字列を送ることができない2Pythonのクラスのスイート部分の__init__当たりの質問です。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。