SORU
30 Kasım 2012, Cuma


Python soyut sınıflar yapmak mümkün mü?

Böyle __new__() yeniden denedim:

class F:
    def __new__(cls):
        raise Exception("Unable to create an instance of abstract class %s" %cls)

Ve, tüm örneklerini her zaman bir hata yetiştireceği tanımlayabilirim çalışmıyor. Eğer ben şimdi bir sınıfı miras ancak böyle F G:

class G(F):
    pass

G ya, süper sınıf çağırır neden' __new__ yöntem?herhangi bir örneğini bulamadım Nasıl G ya F, __new__ kullanmaz bunu yapabilir miyim ya da soyut bir sınıf tanımlamak için daha iyi bir yolu var mı?

CEVAP
30 Kasım 2012, Cuma


Python abc modül soyut sınıflar oluşturmak için kullanın.

from abc import ABCMeta, abstractmethod

class Abstract(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def foo(self):
        pass

Abstract()
>>> TypeError: Can not instantiate abstract class Abstract with abstract methods foo

class B(Abstract):
    pass

B()
>>> TypeError: Can not instantiate abstract class B with abstract methods foo

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FlippinWindows | #1 Windows Tutorial Channel!

    FlippinWindo

    23 Mayıs 2010
  • LearnKey

    LearnKey

    19 AĞUSTOS 2008
  • READ DESCRIPTION NOW!!!!!!!

    READ DESCRIP

    18 ŞUBAT 2009