このコードでは:
def fa(a,b):
print a
print b
print " fa called"
class A:
@classmethod
def fa(a,b):
print a
print b
print " A.fa called"
class B:
def __init__(s,a):
s.a = a
obj1 = B(A.fa)
obj1.a("xxxx")
obj2 = B(fa)
obj2.a("xxxx")
出力:
__main__.A
xxxx
A.fa called
Traceback (most recent call last):
File "test.py", line 20, in <module>
obj2.a("xxxx")
TypeError: fa() takes exactly 2 arguments (1 given)
フリーメソッド「fa」が最初のパラメータとして「self」を受け取らないのはなぜですか? バインドされたメソッド A.fa は期待どおりに動作します。