Heim  >  Artikel  >  Backend-Entwicklung  >  Python objektorientiert

Python objektorientiert

高洛峰
高洛峰Original
2016-12-01 13:36:211089Durchsuche

Mitglieder in der Klasse

1. Felder

1. Statische Felder Der Zugriff auf statische Felder über die Klasse selbst wurde bereits erstellt, als der Klassencode geladen wurde, ohne darauf warten zu müssen neuer Klassenname()

2. Auf gewöhnliche Felder wird über Objekte zugegriffen

2. Methoden

Alle Methoden gehören zur Klasse

1. Gewöhnliche Methoden Sie können nur zuerst Objekte der Klasse erstellen und dann

über das Objekt def show(self) aufrufen: self ist das Klassenobjekt, das automatisch die aufrufende Methode

print(self.name) übergibt.

2. Statische Methode statisch Der Methodenaufruf hängt von keinem Objekt ab. Er wird über den Klassennamen Methodenname () aufgerufen, wodurch Speicher gespart wird. und die Parameter müssen nicht selbst sein.

@staticmethod

def f1():

pass

3. Klassenmethode (Sonderform der statischen Methode)

@classmethod

def f1(cls): cls übergibt automatisch den Klassennamen dieser Methode

pass

3 . Attribute

Enthält zwei Formen von Feldern und Methoden in der Klasse

@property //Property-Deklaration

def all_page(self): def all_page(self):

return 100                                     return 100


@all_page.setter all_page muss eine unter dem Dekorator @property definierte Funktion sein Wert ):

pass

obj.all_page = 100 //Methode automatisch unter dem Setter-Dekorator aufrufen

@all_page.deleter


def all_page(self):

pass

del obj.all_page // Rufen Sie die Methode automatisch unter dem Löschdekorator auf

obj.all_page ruft es direkt wie ein Feld auf. Ruft den Rückgabewert der Funktion ab


obj.all_page() Methodenaufruf Wenn das Objekt eine Methode aufruft, muss ihm ()

foo = property(fget=func1,fset =func2,fdel=func3)

foo = property(func1,func2,func3)

func1, func2, fun3 sind alle in der Klasse definierten Methoden

Klassenname .foo Das Programm führt die Methode func1 aus und erhält den Rückgabewert von func1

Klassenname .foo = "newvalue" Führen Sie die Methode func2 aus

Mitgliedsmodifikatoren

Die Standardfeld- und Methodennamen sind öffentlich. Wenn Sie __ vor den Feldern und Methoden hinzufügen, wird das __name-Feld zu einem privaten Mitglied

Auf private Mitglieder kann nur von der Klasse selbst zugegriffen werden, nicht von Unterklassen. Kann auf die privaten Mitglieder der übergeordneten Klasse zugreifen.

Die speziellen Mitglieder der Klasse

obj=Foo() Rufen Sie die integrierte Methode __init__ in der Foo-Klasse auf und erstellen Sie ein obj-Objekt

obj() Foo()() Rufen Sie die integrierte Methode __call__ in auf Foo-Klasse. Diese Syntax existiert nur in Python

__str__-Funktion:

obj = Pager() print(obj) #<__main__.Pager-Objekt bei 0x00000000006E3B00>

obj = Pager() print(obj.__dict__) #{'name':'333'} Der Ausgabewert sind Daten vom Typ Dict

Definieren Sie ein def __str__(self) in der Pager-Klasse: return "{name: obj.name}"

print(obj) #{name:333} Die Ausgabe ist die Zeichenfolgeninformation des Objekts anstelle der Speicheradresse des Objekts

__dict__ Funktion:

(obj ist das Objekt) obj.__dict__ Konvertiert alle von einem beliebigen Objekt gekapselten Daten in dict

(Pager ist eine Klasse) Pager.__dict__ Konvertiert die in einer beliebigen Klasse enthaltenen Mitgliedsinformationen in dict

__getitem__(self,item) __setitem(self,key,value) __delitem__(self,key) Funktion:

obj = Foo()

obj['aa']         #Automatisch aufrufen __getitem__ in der Foo-Klasse

obj['aa']=22                __setitem__

del obj['aa'] #Automatisch die Funktion __delitem__

__iter__ in der Foo-Klasse aufrufen

Ein Objekt kann standardmäßig nicht iteriert werden. Wenn die Klasse, in der sich das Objekt befindet, die Funktion __iter__ definiert, kann dieses Objekt

isinstance ret=isinstance (obj,Foo) Überprüfen Sie, ob das Objekt obj eine Foo-Klasse oder Foo ist. Das Objekt der übergeordneten Klasse

issubclass ret=issubclass(Foo,Bar)

Der funktionale Unterschied zwischen Super und Decorator (zur Codeerweiterung)

1. Sie können Dekoratoren verwenden, um Ihren eigenen Code zum ursprünglich von anderen geschriebenen Funktionsausführungsprozess hinzuzufügen. Sie müssen jedoch der Funktion

in der Quellcodedatei einen Dekorator-Syntaxzucker hinzufügen .

2. Mit dem Super- und Reflection-Mechanismus können Sie eine Unterklasse hinzufügen, um die ursprünglich von anderen geschriebene Klasse zu erben, ohne den Originalcode überhaupt zu ändern. Fügen Sie sie in der benutzerdefinierten Methode der

hinzu super(cls).func, um die ursprüngliche Funktion zum vorhandenen Code hinzuzufügen, um eine Erweiterung der Codefunktion zu erreichen.

model = __import__(Path,fromlist=True) Pfad ist die Zeichenfolge des gelesenen Konfigurationselements

cls = getattr(model,ClassName) ClassName ist die Zeichenfolge des gelesenen Konfigurationselements

obj = cls()

obj.f1() Rufen Sie bestimmte Funktionen in der Python-Klasse dynamisch im Formular auf von Saiten.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn