@aarifkhamdi

Возможно ли заставить Python искать метод в экземпляре?

class A:
    def sayHello(self):
        print('Hello!')


class B:
    def sayHello(self):
        print('Hello')


def sayHello(self):
    print("HEEEEEEEEELLLLLLLLOOOOOOOOOOOOOOOOOOOO!")


a = A()
a.sayHello()
A.sayHello = sayHello  # сломались все остальные экземляры
a.sayHello()

b = B()
b.sayHello()
b.sayHello = sayHello  # на остальные экземляры не повлияло
b.sayHello()  # не работает

Возможно ли организовать что-то наподобие A в B? Как, если возможно?

у меня несколько модулей с одинаковыми названиями функций. в зависимости от некоторых условий мне надо брать функцию из модуля для текущего экземляра (потому что если брать для класса, то сломаются остальные экземляры)
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
@javedimka
Хочу сока
Ну гуглится же: "python assign bound method to existing class"
https://stackoverflow.com/questions/972/adding-a-m...
Там же по ссылке есть второй способ.
In [1]: class A:
   ...:     def sayHello(self):
   ...:         print('Hello!')
   ...:

In [2]: def sayHello(self):
   ...:     print('Hey')
   ...:

In [3]: a = A()

In [4]: b = A()

In [5]: a.sayHello()
Hello!

In [6]: a.sayHello = sayHello.__get__(a)

In [7]: a.sayHello()
Hey

In [8]: b.sayHello()
Hello!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Astrohas
@Astrohas
Python/Django Developer
class Hasan:

  def say_hello(self):
      print("HEEEEEEEEELLLLLLLLOOOOOOOOOOOOOOOOOOOO!")

class A(Hasan):
    def say_hello(self):
        print('Hello')
        self.say_hello = super().say_hello
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы