Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist eine Klasse in Python?

Was ist eine Klasse in Python?

藏色散人
藏色散人Original
2019-06-24 11:25:204660Durchsuche

Was ist eine Klasse in Python?

Was ist eine Klasse in Python?

kann als Synonym für Kategorie oder Typ angesehen werden. Alle Objekte gehören zu einer bestimmten Klasse und werden Instanzen dieser Klasse genannt.

Zum Beispiel: Bird ist eine Instanz von „bird“. Dies ist nur eine allgemeine (abstrakte) Klasse mit vielen Unterklassen: Der Vogel, den Sie sehen, könnte zur Unterklasse „lark“ gehören. Stellen Sie sich „Vögel“ als die Sammlung aller Vögel vor, von denen „Lerchen“ eine Untergruppe sind. Wenn die Klasse, zu der ein Objekt gehört, eine Teilmenge der Klasse ist, zu der ein anderes Objekt gehört, wird die erstere als Unterklasse der letzteren bezeichnet, also sind „Lerchen“ Unterklassen von „Vögeln“ und „Vögel“ sind „Lerchen“ „Vogel“. " Superklasse

Das Definieren einer Unterklasse ist nur ein Prozess zum Definieren weiterer Methoden.

Erstellen Sie die Klasse

>>> class Person:    def setName(self,name):
        self.name=name    def getName(self):        return self.name    def greet(self):        print "Hello,world! I'm %s" % self.name        
>>> foo=Person()>>> bar=Person()>>> foo.setName('Nsds')>>> bar.setName('Ysdy')>>> foo.greet()
Hello,world! I'm Nsds>>> bar.greet()
Hello,world! I'm Ysdy

, bevor Sie setName of foo aufrufen, wenn Sie die Begrüßung verwenden Funktion, foo übergibt sich automatisch als erster Parameter an die Funktion und heißt daher self. Ohne self können Mitgliedsmethoden nicht auf das Objekt selbst zugreifen, auf das sie seine Eigenschaften anwenden möchten.

Auf Eigenschaften kann extern zugegriffen werden:

>>> foo.name'Nsds'>>> bar.name='Yoda'>>> bar.greet()
Hello,world! I'm Yoda

Eigenschaften, Funktionen, Methoden

Das Selbst Parameter ist eigentlich der Unterschied zwischen Methoden und Funktionen. Methoden binden ihren ersten Parameter an die entsprechende Instanz, sodass dieser Parameter nicht angegeben werden muss. Sie können die Eigenschaften also an eine normale Funktion binden, sodass es keinen speziellen Selbstparameter gibt:

(Merkmale sind Variablen innerhalb des Objekts, der Zustand des Objekts wird durch seine Eigenschaften beschrieben und die Methoden des Objekts Sie kann seine Eigenschaften ändern und direkt von außerhalb des Objekts auf die Eigenschaften zugreifen)

>>> class Class:    def method(self):        print 'I have a self!'

        >>> def function():    print "I don't...">>> s=Class()>>> s.method()
I have a self!>>> s.method=function>>> s.method()
I don't...

Die Referenz der Variablen „birdsong“ ist an die Methode „bird.sing“ oder an den Parameter „self“ gebunden (immer noch an dieselbe Instanz der Klasse gebunden).

>>> class Bird:
    song='Squaawk'
    def sing(self):        print self.song        
>>> bird=Bird()>>> bird.sing()
Squaawk>>> birdsong=bird.sing>>> birdsong()
Squaawk

Fügen Sie vor dem Namen einen doppelten Unterstrich ein, um die Methode oder Funktion privat (von außen unzugänglich) zu machen.

>>> class Secretive:    def __inaccessible(self):        print "Bet you can't see me..."
    def accessible(self):        print "The secret message is:"
        self.__inaccessible()        
>>> s=Secretive()>>> s.__inacessible()

Traceback (most recent call last):
  File "<pyshell#182>", line 1, in <module>
    s.__inacessible()
AttributeError: &#39;Secretive&#39; object has no attribute &#39;__inacessible&#39;>>> s.accessible()
The secret message is:
Bet you can&#39;t see me...

In der internen Definition der Klasse sind alle Namen, die mit doppelten Unterstrichen beginnen, Is „übersetzt“ in die Form, der ein einzelner Unterstrich und der Klassenname vorangestellt sind

>>> Secretive._Secretive__inaccessible<unbound method Secretive.__inaccessible>
>>> s._Secretive__inaccessible()
Bet you can&#39;t see me...

Der Namespace der Klasse

Beim Definieren einer Klasse befindet sich der gesamte Code in der Klassenanweisung in einem speziellen Namespace Execute --- der Namespace der Klasse. Auf diesen Namespace können alle Mitglieder der Klasse zugreifen.

Die Definition einer Klasse ist eigentlich der Ausführungscodeblock

>>> =+=1

        
>>> m1=>>>>>>1
>>> m1.members=2
>>>2
>>> m2=>>>>>>2
>>>>>>3
>>>2
>>>

Der neue Mitgliedswert wird in die Eigenschaften von m1 geschrieben und schützt Variablen innerhalb des Klassenbereichs

Superklasse

>>> class Filter:    def init(self):
        self.blocked=[]    def filter(self,sequence):        return [x for x in sequence if x not in self.blocked]    
>>> class SPAMFilter(Filter):    def init(self):
        self.blocked=[&#39;SPAM&#39;]        
>>> f=Filter()>>> f.init()>>> f.filter([1,2,3])
[1, 2, 3]>>> s=SPAMFilter()>>> s.init()>>> s.filter([&#39;SPAM&#39;,&#39;SPAM&#39;,&#39;egg&#39;,&#39;name&#39;,&#39;ff&#39;])
[&#39;egg&#39;, &#39;name&#39;, &#39;ff&#39;]

Vererbung, Superklasse

>>> class Filter:    def init(self):
        self.blockes=[]    def filter(self,sequence):        return [x for x in sequence if x not in self.blocked]    
>>> class S(Filter):    def init(self):
        self.blocked=[&#39;s&#39;]        
>>> f=Filter()>>> f.init()>>> f.filter([1,2,3])

Mehrere Superklassen

Methoden in der Klasse, die zuerst geerbt wird, überschreiben Methoden in der Klasse, die später geerbt wird

>>> class C():    def calculate(self,expression):
        self.value=eval(expression)        
>>> class Talker():    def talk(self):        print &#39;Hi,my value is&#39;,self.value        
>>> class TalkingCalculator(C,Talker):    pass>>> tc=TalkingCalculator()>>> tc.calculate(&#39;1+2*3&#39;)>>> tc.talk()
Hi,my value is 7

Verwandte Empfehlungen: „Python-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist eine Klasse in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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