SORU
30 NİSAN 2009, PERŞEMBE


Bir üst sınıf'Python alt sınıftan yöntem ler diyorsun?

Python ile basit bir nesne hiyerarşisini oluştururken, türetilmiş bir sınıf üst sınıf yöntemlerini çağırmak için mümkün olmak istiyorum. Perl ve Java, bu (süper) için bir anahtar kelime var. Perl, bu da yapabilirim:

package Foo;

sub frotz {
    return "Bamf";
}

package Bar;
@ISA = qw(Foo);

sub frotz {
   my $str = SUPER::frotz();
   return uc($str);
}

Python, alt üst sınıf açıkça isim var gibi görünüyor. Yukarıdaki örnekte, Foo gibi bir şey yapmak istiyorum::frotz().

Bu davranış, zor derin hiyerarşileri yapar beri doğru bir davranış değil. Eğer çocuklar kalıtsal bir yöntem tanımlanmış ne bilmek istiyorsanız, o zaman bilgi ağrı her türlü oluşturulur.

Bu python, benim anlayışıma göre bir boşluğu ya da fiili bir sınırlama var mı?

CEVAP
30 NİSAN 2009, PERŞEMBE


Evet, ama sadece new-style classes ile. super() işlevini kullanın:

class Foo(Bar):
    def baz(self, arg):
        return super(Foo, self).baz(arg)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • CorridorDigital

    CorridorDigi

    17 Mayıs 2010
  • DavidParody

    DavidParody

    17 EKİM 2009