b = 123
на самом деле вызывает метакласс type
A = type("A", (), {"b": 123})
Однако,
def smth(smth_arg):
print(smth_arg)
class A(object):
maybe_method = smth
a = A()
a.maybe_method("123")
# prints 123
Тогда как метакласс type отличает аттрибут-функцию от аттрибута-метода?
Где вообще почитать, как именно происходит в питоне превращение функции в метод, связывание со ссылкой на экземпляр?
>>> a.maybe_method("123") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: smth() takes 1 positional argument but 2 were given
Обсуждают сегодня