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

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • michaeljacksonVEVO

    michaeljacks

    2 EYLÜL 2009
  • sghaff1

    sghaff1

    23 Mart 2009