Nasıl Python (süper) temel sınıf başlatmak mı?
Python, aşağıdaki kodu var düşünün:
>>> class SuperClass(object):
def __init__(self, x):
self.x = x
>>> class SubClass(SuperClass):
def __init__(self, y):
self.y = y
# how do I initialize the SuperClass __init__ here?
Nasıl alt SuperClass __init__
başlatma mı? Python öğretici takip ediyorum ve bunu karşılamıyor. Google'da aradığımda yapmanın birden fazla yolu buldum. Bu işleme standart yolu nedir?
CEVAP
Python (sürüm 3'e kadar) destekler "eski tarz" ve yeni-stil sınıfları. Tarzı yeni sınıflar türetilmiştir 'kullanıyorsanız ve bunların temel sınıfın çağırmak süper ile ne' ve(), örneğin . nesne
class X(object):
def __init__(self, x):
pass
def doit(self, bar):
pass
class Y(X):
def __init__(self):
super(Y, self).__init__(123)
def doit(self, foo):
return super(Y, self).doit(foo)
Python eski ve yeni tarzı sınıfları hakkında bildiği için, bunu yapmanın birden çok yolu buldum, bu yüzden temel bir yöntemi çağırmak için farklı yolları vardır.
Bütünlüğü uğruna, tarzı eski sınıfların temel yöntemleri açıkça temel sınıfı kullanarak arama yani
def doit(self, foo):
return X.foo(self, foo)
Ama tarzı artık eski kullanarak olmamalıdır, çünkü bu konuda çok fazla umurumda olmaz.
Python 3 sadece yeni tarzı hakkında dersler (eğer nesne türetmek ya da daha iyi bilir.
Sınıf JSON seri hale getirilebilir nas...
Python: sınıf baskı kullanarak bir sın...
Nasıl 'süper' Python kullanm...
Nasıl Python ile bir sınıf tasarımı mı...
Nasıl bir Python sınıf içinde yöntemle...