オブジェクトの作成後に内部メソッドを参照するオブジェクト属性を外部関数に変更すると、以前のように(関数を含む)属性が呼び出されたとしても、selfは新しい関数に渡されません。属性が外部関数を参照するように変更されたら、なぜ自己は渡されませんか?
class Person:
def greet(self):
print("hello")
do = greet
def wave(person):
print("bye")
alice = Person()
alice.do() #prints 'hello'
#change do to point an external function
alice.do = wave
alice.do() #Error: Missing argument
Iを得る正確なエラーは、次のとおり
hello
Traceback (most recent call last):
File "C:\Users\Owner\Desktop\miniLiveMethodSwitch.py", line 15, in <module>
alice.do() #Error: Missing argument
TypeError: wave() missing 1 required positional argument: 'person'
一つは、内部メソッドとしてクラスに
class Person:
def greet(self):
print("hello")
def wave(person):
print("bye")
do = greet
を外部関数を移動すると予想されるように、コードが動作します。属性が外部関数を参照するように変更されたら、なぜ自己は渡されないのですか?自己を渡すように関数を呼び出す適切な方法は何ですか?