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

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • Elefant Traks

    Elefant Trak

    5 HAZİRAN 2007
  • LiquidMusick

    LiquidMusick

    23 Aralık 2010