class Test:
def func():
print('func')
test1 = Test()
test2 = Test()
test1.func() #TypeError: fun1() takes no arguments (1 given)
test2.newfunc = Test.func
test2.newfunc()#It goes well
# update part
def foo(self):
pass
Test.foo = foo
test1.foo # it is bound method
test2.foo = foo
test2.foo # it is function
# end
2つの方法に違いはありますか?おかげさまで python関数
重要なのは、取得がインスタンスではなくクラスで行われることです。
このクラスのものがどのように動作するのか把握していないように見えます。あなたがしていることは意味をなさない。あなたがそれを把握していなければ、Pythonのマニュアルとチュートリアルは良いものです。 –
これは面白いことです...なぜ 'test2.newfunc()'が動作するのかわかりません。 – DonCallisto
@Romanの答えは完全に正しいです。 test2.newfunc = Test.Funcを実行すると、オブジェクト定義がバイパスされ、関数定義に直接入ります。したがって、パラメータは指定されません。今それは明確です – DonCallisto