SORU
12 EYLÜL 2010, Pazar


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
12 EYLÜL 2010, Pazar


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010