Допустим у меня есть класс
class A:
x, y = 1, 2
и объект для этого класса
a = A()
Как добавить к a новый метод?
Если сделать так
a.f = lambda self: self.x + self.y
print(a.f())
то получаю ошибку
Traceback (most recent call last):
File "python", line 8, in
А если так
a.f = lambda: "body"
то внутри лямбда функции у меня нет доступа к объекту.
Ответ
https://stackoverflow.com/questions/972/adding-a-method-to-an-existing-object-instance
import types
class A:
x, y = 1, 2
a = A()
a.f = types.MethodType(lambda self: self.x + self.y, a)
a.f() # --> 3
Разница в следующем:
a.g = lambda self: self.x + self.y
a.f # -->
Но:
>>> A.h = lambda self: self.x + self.y
>>> a.h()
3
Комментариев нет:
Отправить комментарий