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

  • HereWeStayKings

    HereWeStayKi

    3 NİSAN 2013
  • Incredible Tutorials

    Incredible T

    27 EKİM 2006
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009