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

  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • TechRax

    TechRax

    21 EYLÜL 2009
  • the one am radio

    the one am r

    6 Mayıs 2006