Possible Duplicate:
Subclassing Python tuple with multiple __init__ argumentsPython'da bir tuple alt sınıfının örneğini nasıl başlatılır?
I tuple
devralan bir sınıf tanımlamak istiyorum ve tuple
tarafından desteklenmeyen bir sözdizimi kullanılarak örneğini mümkün istiyoruz. Basit bir örnek için, tuple
'dan miras alan bir MyTuple
sınıfını tanımlamak istediğimi ve (benim) (x, y)
(benim) tuple'ı oluşturmak için x
ve y
iki değerini geçerek oluşturabildiğimi söyleyebilirim. Aşağıdaki kodu denedim:
class MyTuple(tuple):
def __init__(self, x, y):
print("debug message")
super().__init__((x, y))
Ama çalıştığımızda, örneğin, MyTuple(2, 3)
bir hata aldım: TypeError: tuple() takes at most 1 argument (2 given)
. Görünüşe göre __init__
işlevim bile çağrılmadı (aldığım hatayı temel alarak "hata ayıklama mesajım" basılmadı).
Peki bunu yapmanın doğru yolu nedir?
Python 3.2 kullanıyorum. super
kullanmanın zorluklar
['' collections.namedtuple() ''] 'da bir göz atmak isteyebilirsiniz (http://docs.python.org/dev/library/collections.html#collections.namedtuple). –
Lütfen (bu orijinal SO sorusunu) kontrol edin (http://stackoverflow.com/questions/1565374/subclassing-python-tuple-with-multiple-init-arguments). __new__' yerine '__init__' (2) takip etmeniz gereken diğer adımlar. –