Полиморфизм объекта. Как подвергнуть полиморфизму не метод класса а конкретного объекта?

354 просмотра
0
0 Комментариев

Cat Tom = new Cat() {
    @Override
    public String say() { return "Meau! Meau!  MEAU!!!"; }
};

Это код из джавы. Можно ли провернуть такую фичу на питоне и подвергнуть полиморфизму не метод класса а конкретного объекта, и как?


Добавить комментарий

2 Answers

Python Опубликовано 16.12.2018
0

Это такая короткая запись производного класса с одним перекрытым методом.

На Питоне просто заведите производный класс и перекройте метод вручную. (В Питоне, как и в Джаве, методы классов по сути виртуальные.)

Добавить комментарий
0

Python и Java — разные языки и подходы к решению одной и той же задачи могут отличаться. В данном случае можно воспользоваться тем фактом, что в языке Python у каждого объекта можно менять (почти) любое свойство, в том числе и переопределять методы класса:

class Test:
    def say(self):
        print("class Test")
 
test = Test()
 
test2 = Test()
test2.say = lambda: print("test2")
 
test.say()
test2.say()

Вывод этой программы:

class Test

test2

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up