Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 28, 2010 16:00:39

xakzona
От:
Зарегистрирован: 2010-02-28
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Замещение метода

Как заменить метод класса?
к примеру есть класс Edit, у которого объявлен метод onclick(self)
Как мне его описать, не применяя наследование этого класса



Офлайн

#2 Фев. 28, 2010 17:00:51

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

Замещение метода

>>> class A:
def f(self, x):
print(1)

>>> def f(a, x):
print(x)

>>> A.f = f
>>> b = A()
>>> b.f(2)
2



Офлайн

#3 Фев. 28, 2010 19:46:10

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

Замещение метода

То, что написал bazooka соответствует вопросу, но таит в себе некоторую опасность. Старые объекты класса A после такого переопределения внезапно начнут выполнять не то, что от них ожидали.

Думаю, что лучше замещать метод у объекта, а не класса. А в классе замещать наследованием.



Офлайн

#4 Фев. 28, 2010 21:16:48

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

Замещение метода

тогда будут обьекты одного класса ведущие сибя паразнаму



Офлайн

#5 Фев. 28, 2010 22:02:55

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

Замещение метода

И это будет хорошо. Каждый юнит получает свои индивидуальные скиллы :)
Хотя в играх бывает и так, что разом все юниты получают апгрейд. Но это оторвано от реальной жизни.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version