Python: Klassen: Unterschied zwischen den Versionen

Aus Flinkwiki
Wechseln zu: Navigation, Suche
(Instanzen als Attribute einer Klasse)
(Instanzen als Attribute einer Klasse)
Zeile 56: Zeile 56:
  
 
----
 
----
 +
== Klassenmethoden ==
 +
 +
Klassenmethoden sind nicht an ein Objekt, sondern an eine Klasse gebunden. Im Gegensatz zu statischen Methoden arbeiten Klassenmethoden mit der Klasse, da sie als Parameter immer die Klasse selbst haben.
 +
<nowiki>
 +
class Person:
 +
    age = 25
 +
 +
    def printAge(cls):
 +
        print('The age is:', cls.age)
 +
 +
# create printAge class method
 +
Person.printAge = classmethod(Person.printAge)
 +
 +
Person.printAge()
 +
</nowiki>
 +
Ausgabe:
 +
The age is: 25
 +
[https://www.programiz.com/python-programming/methods/built-in/classmethod Programiz Python Programming]
 +
 +
----
 +
  
 
[[Kategorie: Alle Seiten]] | [[Kategorie: Programmierung ]] |
 
[[Kategorie: Alle Seiten]] | [[Kategorie: Programmierung ]] |

Version vom 24. September 2020, 10:58 Uhr

Seitenübersicht
Zur Seite "Python"
Zur Seite "Python: Module"
Zur Seite "Python: Turtle"
Zur Seite "Python: Tkinter"
Zur Seite "Python: pygame"
Zur Seite "Python: PyQT"

Allgemeines

Beispiel für Klasse und ihre Instanziierung:

class Tiere:
    def bewegen(self):
        print("Ich bewege mich")
    def fressen(self):
        print("Ich fresse.")

class Rind(Tiere):
    def __init__(self, flecken):
        self.kuhflecken = flecken
    def findeFutter(self):
        self.bewegen()
        print("Ich habe Futter gefunden!")
        self.fressen()

elsa = Rind(20)
print("Anzahl der Flecken:", elsa.kuhflecken)
elsa.findeFutter()

Vererbung

Grundschema

class Elektroauto(Auto):
    def __init__(self, make, model, year):
        super().__init__(make, model,year)

Die Funktion super() weist Python an, die Funktion __init__ der Elternklasse aufzurufen.


Instanzen als Attribute einer Klasse

Die Instanz einer Klasse (hier: Klasse Batterie) kann in einer anderen Klasse als Attribut dienen:

class Auto:
    def __init__(self, make, model, year):
    self.batterie = Batterie()

Die Methode einer Instanz von Auto könnte für die Batterie dann so lauten:

bmw1 = Auto()
bmw1.batterie.methode()

Klassenmethoden

Klassenmethoden sind nicht an ein Objekt, sondern an eine Klasse gebunden. Im Gegensatz zu statischen Methoden arbeiten Klassenmethoden mit der Klasse, da sie als Parameter immer die Klasse selbst haben.

class Person:
    age = 25

    def printAge(cls):
        print('The age is:', cls.age)

# create printAge class method
Person.printAge = classmethod(Person.printAge)

Person.printAge()

Ausgabe:

The age is: 25

Programiz Python Programming


| |