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): pass
class Person(object): eyes = 2 mouth = 1
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' 1
# 我们修改一下这个函数 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' 1
# 再一次修改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' 2
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' 2
# 添加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()
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!