我想創建一個模仿元組類但具有一些額外屬性的類,例如自定義新類。Python自定義新分類元組
自定義的新作品,但我想不出如何將成員變量與元組繼承。
我嘗試了很多不同的方法,但我更喜歡張貼一個簡單的骨架,看看有人能指導我。由於事先
class tupla(tuple):
x = 0
y = None
def __new__(self, *args):
if len(args)==1:
self.y = args[0]
if len(args)==2:
self.x = args[0]
self.y = args[1]
return tuple.__new__(tupla, (self.x, self.y))
a = tupla(2)
print a
a.x = 1
print a
的輸出當然的,
(0,2)
(0,2)
而不是(1,2)作爲意圖。
UPDATE:
它不是用一個元組來做到這一點的答案澄清一個好主意。儘管如此,如果有一種方法可以與列表完成相同的目的,那麼它將非常有幫助。
class lista(list):
x = 0
y = None
def __init__(self,*args):
print 'init'
if len(args)==1:
self.y = args[0]
if len(args)==2:
self.x = args[0]
self.y = args[1]
super(lista,self).__init__([self.x, self.y])
a = lista(2)
print a
a.x = 1
print a
現在的輸出是
[0,2]
[0,2]
你確定你打算在這裏設置'tupla.y'嗎?運行'a = tupla(2);打印tupla.y'看我的意思 – Eric
我很驚訝,爲什麼會這樣呢? –
因爲'__new__'需要'cls'作爲它的第一個參數,而不是'self',所以你實際上在類 – Eric