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

  • EEVblog2

    EEVblog2

    2 HAZİRAN 2014
  • L33TNoonProductions

    L33TNoonProd

    24 EYLÜL 2010
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007