我想重載一個操作符強制它返回當前類的同一個實例的對象,而不是方法被重載的父類。如何定義一個方法,以便返回當前類的實例而不是返回它在Python中繼承的類的實例?
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>
例如,在這種情況下,我想沒有超載另一次操作__add__
與Encyclopedia
代替Book
同一行我試圖返回一個Encycolpedia
實例(不是Book
實例):
return self(self.name,(self.pages + other.pages))
但它不起作用。
如果類Enclcopedia有另一個屬性:
class Encyclopedia(Book):
def __init__(self,name,pages,color):
Book.__init__(self,name,pages)
self.color=color
如果類百科全書具有另一個屬性,該怎麼辦? –
@GM然後,您需要重寫Encyclopedia類中的添加運算符來處理該屬性。 –
嗯我明白,所以在這個例子中繼承幾乎是無用的... –