#python #python_3x #классы #методы
Допустим у меня есть класс
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
TypeError: () missing 1 required positional argument: 'self'
А если так
a.f = lambda: "body"
то внутри лямбда функции у меня нет доступа к объекту.
Ответы
Ответ 1
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 # -->of <__main__.A object at 0x7f4de50d5978>> a.g # --> at 0x7f4de51babf8> Но: >>> A.h = lambda self: self.x + self.y >>> a.h() 3
Комментариев нет:
Отправить комментарий