Я определяю атрибут класса и даю ему функцию. Когда я называю эту функцию, экземпляр передается как первый аргумент (как если бы это был вызов функции экземпляра с самостоятельным ).
Я не ожидаю, что экземпляр заботятся о том, что атрибут fn является функцией, не говоря уже о том, чтобы он прошел сам в качестве аргумента. Почему это делает это? < /P>
class BStatic:
fn = None
@staticmethod
def static_fn(*args, **kwargs):
print(args, kwargs)
BStatic.fn = BStatic.static_fn
bs = BStatic()
bs.fn()
# (,) {}
BStatic.fn()
# () {}
< /code>
В другом примере я присвоил атрибут класса функции, определенной в модуле.class B:
fn = None
def instance_fn(self, *args, **kwargs):
print(self, args, kwargs)
def fn(*args, **kwargs):
print(args, kwargs)
B.fn = fn
B.fn()
# () {}
b = B()
b.fn()
# (,) {}
< /code>
Это не так, если я назначу атрибут класса на экземпляре. < /p>
b.fn = fn
b.fn()
# () {}
Подробнее здесь: https://stackoverflow.com/questions/795 ... a-function
Почему Python передает экземпляр атрибуту класса, который является функцией? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему Python передает экземпляр атрибуту класса, который является функцией?
Anonymous » » в форуме Python - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему Python передает экземпляр атрибуту класса, который является функцией?
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Доступ к атрибуту экземпляра родительского класса из экземпляра дочернего класса?
Anonymous » » в форуме Python - 0 Ответы
- 45 Просмотры
-
Последнее сообщение Anonymous
-