2017-02-15 16 views
6

Zauważyłem, że wszystkie 3 ->class foo, class foo() i class foo(object) mogą być użyte, ale jestem zdezorientowany co do różnicy między tymi 3, jeśli są jakieś? (Mam na myśli głównie w nieruchomości, python3)Różnica między klasą foo, klasą foo() i klasą foo (obiektem)?

+0

Wszystkie trzy są takie same. –

+0

Na Pythonie 2 pierwsze dwie formy robią złe rzeczy. W Pythonie 3 są one identyczne (chyba, że ​​zrobiłeś coś głupiego wobec "obiektu"). – user2357112

Odpowiedz

9

Złammy je:

  1. class foo:

    • Python 3: To zwykle droga. Domyślnie Python dodaje object jako klasę podstawową.
    • Python 2: Tworzy stary styl classobj, który spowoduje wszystkie rodzaje bólów głowy.
  2. class foo():

    • Python 3 i Python 2: Podobny do class foo dla obu wersji Pythona, przyciąć go, że wygląda brzydko i nie robi różnicy.
  3. class foo(object):
    • Python 3 i Python 2: W obu pytonów, prowadzi do nowej klasy w stylu, który ma wszystkie gadżety większość zna. Ludzie zwykle używają tego formularza podczas pisania kodu, który może być również użyty w Pythonie 2, jawne dziedziczenie z obiektu powoduje, że klasa staje się nowym stylem w Pythonie 2 i nie robi żadnej różnicy w 3 (poza dodatkowym pisaniem).
Powiązane problemy