Я пытаюсь проверить разницу между атрибутами экземпляра и атрибутами класса, изложенными в выпуске 2.7.3 от Python версии от 9 ноября 2012 г., глава 9: Классы, последняя строка (источник):
Действительные имена методов объекта экземпляра зависят от его класса. От определение, все атрибуты класса, которые являются объектами функции, определяют соответствующие методы его экземпляров. Итак, в нашем примере x.f является действительная ссылка метода, поскольку MyClass.f является функцией, но x.i не является, так как MyClass.i нет. Но x.f - это не то же самое, что MyClass.f - это объект метода, а не объект функции.
У меня есть это:
class MyClass:
"""A simple example class"""
i = 12345
def f():
return 'hello world'
Затем я делаю это:
>>> x = MyClass()
>>> x.f
<bound method MyClass.f of <__main__.MyClass instance at 0x02BB8968>>
>>> MyClass.f
<unbound method MyClass.f>
>>> type(MyClass.f)
<type 'instancemethod'>
>>> type(x.f)
<type 'instancemethod'>
Обратите внимание, что тип x.f
и MyClass.f
является экземпляром метода. Нет разницы в типах, но в учебнике сказано иначе. Может кто-то прояснить?