以下のコードの場合:
import os.path
class Test:
@classmethod
def foo(cls):
cls.exist = os.path.exists
print type(cls.exist)
print type(os.path.exists)
def main():
Test.foo()
出力を次のように取得しています:
<type 'instancemethod'>
<type 'function'>
関数 os.path.exist をクラス変数 cls.exist に割り当てているだけです。しかし、両方の変数を出力すると、1 つはインスタンス メソッドとして取得され、もう 1 つは関数として取得されます。なぜ ?