Belli bir temel sınıftan türetilen tüm sınıfların "yol" adlı bir öznitelik tanımlaması gerekir. ördek yazmak anlamında bir alt sınıfları tanımı güvenmek olabilir:Alt sınıf yapıcısına veya örnek değişkenini kullanarak parametre geçiriliyor mu?
class Base:
pass # no "path" variable here
def Sub(Base):
def __init__(self):
self.path = "something/"
başka olasılıkları temel sınıf kurucu kullanmak olacaktır:
class Base:
def __init__(self, path):
self.path = path
def Sub(Base):
def __init__(self):
super().__init__("something/")
Python 3.1 kullanın.
Neyi tercih edersiniz ve neden? Daha iyi bir yolu var mı? Python 3.0+ yılında
'super()' hakkında hassas bir şey yoktur. Kırılganlık, 3.x'te (OP'nin kullandığı, super() 'aramanın gösterdiği gibi) ve genel olarak birden fazla kalıtımla sabitlenen 2.x sözdizimindedir. Python 3.x'te doğrudan sınıflandırma yöntemini çağırmak için hiçbir neden yoktur, “super() .__ init (...)” sözdizimi asla daha kötü ve genellikle daha iyi değildir. –
"süper" nin kullanımıyla yargılamak istiyorum, deamon'un py3k kullanıyor olduğunu tahmin ediyorum – SilentGhost
@Thomas Wouters: Birden fazla miras ve temel kurumu farklı kurucu imzalarla birlikte kullanırsanız nasıl süper kullanırsınız? Türetilmiş sınıfların tüm argümanlarını tüm temel sınıflara iletmek, adlandırılmış parametrelere güvenerek kirli sınıflara benziyor ve temel sınıfların ihtiyaç duydukları şeyi daha güzel bir hale getirmesine izin vermiyor. – kriss