SORU
16 Aralık 2008, Salı


Python soyut sınıf ve arayüz arasındaki fark

Python soyut sınıf ve arayüz arasındaki fark nedir?

CEVAP
16 Aralık 2008, Salı


Bazen göreceğiniz şey şudur:

class Abstract1( object ):
    """Some description that tells you it's abstract,
    often listing the methods you're expected to supply."""
    def aMethod( self ):
        raise NotImplementedError( "Should have implemented this" )

Python (ve ihtiyacı yok) Arayüzü resmi bir sözleşme olmadığı için, soyutlama ve arayüz arasında Java tarzı bir ayrım yok. Eğer birisi resmi bir arabirim tanımlamak için çaba olursa, bu soyut bir sınıf olacak. Tek farkları Fibonacci sayıları belirtilen niyet olurdu.

Ve soyut ve arayüz arasındaki fark ördek yazdığınız zaman hairsplitting bir şey.

Java çoklu kalıtım yok çünkü arayüzleri kullanır.

Python çoklu miras olduğundan, ayrıca böyle bir şey görebilirsiniz

class SomeAbstraction( object ):
    pass # lots of stuff - but missing something

class Mixin1( object ):
    def something( self ):
        pass # one implementation

class Mixin2( object ):
    def something( self ):
        pass # another

class Concrete1( SomeAbstraction, Mixin1 ):
    pass

class Concrete2( SomeAbstraction, Mixin2 ):
    pass

Bu ayrık olan beton sınıflarını oluşturmak için mixins ile soyut üst sınıf bir tür kullanır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • sonia989

    sonia989

    26 EKİM 2006