#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, inTypeError: () 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
Комментариев нет:
Отправить комментарий