【发布时间】:2016-06-03 01:14:55
【问题描述】:
我正在尝试重载一个运算符,强制它返回当前类的同一实例的对象,而不是方法被重载的父类。
class Book:
def __init__(self,name,pages):
self.name=name
self.pages=pages
def __add__(self,other):
return Book(self.name,(self.pages + other.pages))
class Encyclopedia(Book):
def __init__(self,name,pages):
Book.__init__(self,name,pages)
a=Encyclopedia('Omina',234)
b=Encyclopedia('Omnia2',244)
ab=a+b
print ab
Out: <__main__.Book instance at 0x1046dfd88>
例如,在这种情况下,我想返回一个Encycolpedia 实例(不是Book 实例),而不会再次重载运算符__add__ 与Encyclopedia 的同一行而不是Book 我有试过了:
return self(self.name,(self.pages + other.pages))
但它不起作用。
如果类百科全书有另一个属性怎么办:
class Encyclopedia(Book):
def __init__(self,name,pages,color):
Book.__init__(self,name,pages)
self.color=color
【问题讨论】:
标签: python class inheritance operator-overloading