Почему Python передает экземпляр атрибуту класса, который является функцией?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Python передает экземпляр атрибуту класса, который является функцией?

Сообщение Anonymous »

Я определяю атрибут класса и даю ему функцию. Когда я называю эту функцию, экземпляр передается как первый аргумент (как если бы это был вызов функции экземпляра с самостоятельным ).
Я не ожидаю, что экземпляр заботятся о том, что атрибут 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»