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

  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • Tina Chen

    Tina Chen

    26 Mayıs 2012