Verständnisfrage Bildung von Klassen mit oder ohne Klammern ()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
luvlinux
User
Beiträge: 33
Registriert: Donnerstag 24. August 2017, 08:53

Hallo zusammen,

ich beschäftige mich derzeit mit oop und habe mir hierzu von thenewboston (Bucky Roberts) youtube-videos dazu angesehen. Nun habe ich gemerkt, dass er (und auch andere Programmierer) Klassen bildet, mal mit und mal ohne Klammernpaar. Also z. B.

Code: Alles auswählen

class Enemy:
...
oder

Code: Alles auswählen

class Parent():
...
oder

Code: Alles auswählen

class MyClass(object)
...
Letztere Klasse hab ich iwo im Internet gesehen, weiß aber nicht mehr genau wo.

Da ich gelesen habe, dass Vererbung eine Rolle spielt wollte ich wissen ob das der wahre Grund für die Klammern ist? Oder hat das eher mit den unterschiedlichen Python-Versionen zu tun 2.7 bzw. 3.x?

Danke für Eure Hilfe.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es gibt in Python 2 da tatsaechlich einen gewichtigen Unterschied: so gennante new-style classes brauchen zwingend eine Ableitung von object. Ohne die kannst du viele gute Features wie zB das descriptor-Protocol fuer properties etc nicht nutzen.

In Python 3 gibt es AFAIK diesen Unterschied nicht mehr, da ist es dann egal. Aus aesthetischen Gruenden hat man dann glaube ich erlaubt, das class-statements auch leere Klammern haben koennen.
Sirius3
User
Beiträge: 17753
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: die leeren Klammern kommen daher, dass man in Klammern beliebig viele (also auch 0) Basisklassen angeben kann.
luvlinux
User
Beiträge: 33
Registriert: Donnerstag 24. August 2017, 08:53

Vielen Dank, dass ihr mir weitergeholfen habt.

Wünsche euch allen ein schönes Wochenende.
Antworten