2015-03-07 5 views
0

Я использую Python 2.6.6, и я хочу знать, если я могу применить новые функции встроенных классов и тип без подклассов его, например:Python - Применение новых функций для встроенных классов

t1 = (20,20) 
t2 = (40,30) 
print t2 - t1 #gives me (20,10) 
print t2 + t1 #gives me (60,50) 

Для этого мне нужно добавить функции __sub__ и __add__ для набора класса. Возможно ли это?

+0

Вы хотите добавить и добавить значения? –

+0

Если вы хотите реализовать знак минус, вам нужно реализовать __sub__ и __add__ для плюс, поэтому я это делаю. Это был просто пример, но есть ли какие-либо проблемы с этим? – oridm

+0

Каков ваш ожидаемый результат? –

ответ

0

Вы не строго должны подкласс, вы можете сделать класс и передать в кортеже убедившись, что у вас есть метод __getitem__ определяется также:

class Tuple(object): 
    def __init__(self, t): 
     self.t = t 

    def __getitem__(self, item): 
     return self.t[item] 

    def __add__(self, other): 
     return self[0] + other[0], self[1]+other[1] 

    def __sub__(self, other): 
     return self[0] - other[0], self[1] - other[1] 


t1 = MyTuple((20,20)) 
t2 = MyTuple((40,30)) 

print(t2 - t1) 
print(t2 + t1) 

Вы не можете изменить любые типов, определенные в модулях расширения C поскольку они являются неизменяемыми, если вы хотите различного поведения, вам нужно либо подкласс, либо создать пользовательский класс и передать тип, как указано выше.

Смежные вопросы