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

  • HSmasteryoda .

    HSmasteryoda

    22 Ocak 2010
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010