Heim > Artikel > Backend-Entwicklung > Über Klassen und Methoden in der objektorientierten Python-Programmierung
Klassen und Instanzen
Python ist eine objektorientierte Sprache, und die wichtigsten Konzepte der Objektorientierung sind Klassen und Instanzen Ich verstand diese sehr gut, als ich es zum ersten Mal lernte, bis der Lehrer sagte: „Das ist eine Klasse.“ >
Eine Klasse besteht eigentlich darin, Dinge mit den gleichen Eigenschaften in einer Kategorie zu gruppieren, zum Beispiel menschlich
Wir haben es definiert die menschliche Klasse, aber der Mensch hat einige Eigenschaften, wie zum Beispiel zwei Augen und einen Mund, wir fügen diese hinzuclass Person(object): passIch habe bereits einige Informationen darüber geschrieben die Person, aber die Person hat immer noch einen Namen, so wie ich, Nerz. Nun, ich kann mich nicht schlecht behandeln, ich muss diese hinzufügen 🎜>
class Person(object): eyes = 2 mouth = 1Es ist so perfekt, dass eine Person es endlich geschafft hat. Es hat einen Tag gedauert, und ich habe nur eine Minute gebraucht (nur ein Scherz). Wir haben die Informationen gelesen. Menschen haben zwei Augen, einen Mund und ihr Name ist Nerz . - -! Etwas stimmt nicht, Nerz ist mein Name.
Nerz ist der Name von Menschen, der Name von Menschen ist offensichtlich falsch, „wo“ sollte ein menschliches Individuum sein, ein Single Beispiel
class Person(object): eyes = 2 mouth = 1 name = mink
Jetzt habe ich stattdessen endlich meinen eigenen Namen. Damit jeder sie teilen kann, heißt diese Methode Instanz, aber ich habe eine Fähigkeit, die andere nicht haben Wissen Sie, ich bin nicht von der Schwerkraft betroffen.
class Person(object): eyes = 2 mouth = 1 def __init__(self, name): self.name = name me = Person('mink')
Klassenmethode und statische Methoden
Sie können oft @classmethod sehen und @staticmethod in Python, die als Klassenmethoden und Instanzmethoden bezeichnet werden.
class Person(object): eyes = 2 mouth = 1 def __init__(self, name) self.name = name def jineng(self, txt): print "%s %s" % (self.name, txt) me = Person('mink') me.jineng("我不受重力影响, 我会飞")
Erstellte eine Tierklasse, generierte eine Instanz von cat und druckte die Name und Alter der Katze. Es ist ersichtlich, dass die Attribute der Animal-Klasse zurückgegeben werden, d. h. die Instanz greift auf das -Attribut der Klasse
class Animal(object): name = 'lili' age = 1 cat = Animal() print cat.name, cat.age # print 'lili' 1
Das heißt, diese standardmäßig hinzugefügte Methode ist eine Instanzmethode. Die Instanzmethode ändert die Attribute der Instanz, während sich die Attribute der Klasse nicht ändern
Erklärung, dass Instanzmethoden die Attribute der Klasse nicht ändern können, aber was soll ich tun, wenn ich die Attribute der Klasse ändern möchte
# 显示内容是一样的 print cat.name, cat.age print Animal.name, Animal.age 给Animal类添加一个方法(函数) class Animal(object): name = 'lili' age = 1 def edit(self, name, age): self.name = name self.age = age cat = Animal() cat.edit('rol', 2) print cat.name, cat.age # print 'rol' 2 print Animal.name, Animal.age # print 'lili' 1Hier ist zu beachten, dass der erste Parameter der Bearbeitungsfunktion von self in cls geändert wird. In Python wird empfohlen, cls in der Klassenmethode und im Parameter zu verwenden der Instanzmethode ist self, und hier wird erklärt, dass die Instanz verwendet werden kann. Klassenmethode (Funktion)
# 我们修改一下这个函数 def edit(self, name, age): name = name self.age = age cat = Animal() cat.edit('rol', 2) print cat.name, cat.age # pirnt 'rol' 2 print Animal.name, cat.age # print 'lili' 1Dann füge ich dieser Klasse eine Init-Methode hinzu, um Attribute zu initialisieren
# 再一次修改edit @classmethod def edit(cls, name, age): cls.name = name cls.age = age cat = Animal() cat.edit('rol', 2) print cat.name, cat.age # print 'rol' 2 print Animal.name, Animal.age # print 'rol' 2Nach dem Hinzufügen von __init__ verwendet cat die Attribute der Klasse nicht und ändert die Bearbeitungsmethode, ohne die Attribute der Cat-Instanz zu ändern
Dies zeigt, dass staticmethod die Attribute und Methoden der Instanz nicht verwenden kann. Dann können Sie natürlich keine Klassen verwenden
class Animal(object): name = 'lili' age = 1 def __init__(self, name, age): self.name = name self.age = age ... cat = Animal('kuku', 4) cat.edit('rol', 2) print cat.name, cat.age # print 'kuku' 4 print Animal.name, Animal.age # print 'rol' 2Auf die statische Methode kann über Klassenmethoden und Instanzmethoden zugegriffen werden.Zusammenfassend:Statische Methode (statische Methode)
# 添加staticmethod @staticmethod def say_name(name=None): if not name: name = self.name print 'my name is %s.' % name cat = Animal('kaka', 3) cat.say_name() # 运行的话会报 NameError: global name 'self' is not defined # 那是不是没给他添加self字段, 所以没找到 def say_name(self, name=None): ... cat.say_name() # TypeError: say_name() takes at least 1 argument(0 given), 显示缺少参数
Statische Methode kann nicht verwendet werden die Attribute und Methoden der Instanz
Statische Methode kann die Attribute und Methoden der Klasse nicht verwenden
Statische Methode Kann über eine Klasse oder Instanz aufgerufen werden
# 我们修改一下代码 # 先创建一个实例的方法, 他使用类的staticmethod @staticmethod def say_name(name): print 'my name is %s.' % name def say(self): self.say_name(self.name) @classmethod def _say(cls): cls.say_name(cls.name) cat = Animal('kaka', 3) cat.say() cat._say()Statische Methode ist äquivalent zu einer globalen Funktion mit Gültigkeitsbereich in der KlasseKlassenmethode (Klassenmethode)
Klassenmethode kann die Attribute und Methoden der Klasse verwenden
Klassenmethoden können statische Methoden verwenden
Weitere Informationen zur objektorientierten Python-Programmierung Für Artikel zu Klassen und Methoden achten Sie bitte auf PHP-Chinesisch Webseite!