Wenn eine Klasse erstellt wird, enthält sie einige Methoden, hauptsächlich die folgenden Methoden:
方法 | 说明 | __init__ | 构造函数,在生成对象时调用 | __del__ | 析构函数,释放对象时使用 | __repr__ | 打印,转换 | __setitem__ | 按照索引赋值 | __getitem__ | 按照索引获取值 | __len__ | 获得长度 | __cmp__ | 比较运算 | __call__ | 函数调用 | __add__ | 加运算 | __sub__ | 减运算 | __mul__ | 乘运算 | __div__ | 除运算 | __mod__ | 求余运算 | __pow__ | 乘方 | Methode <🎜> | <🎜>Beschreibung<🎜>< /td> |
__init__ | Konstruktor, aufgerufen beim Generieren von Objekten |
__del__ | Destruktor, der beim Freigeben von Objekten verwendet wird |
__repr__ | Drucken, konvertieren |
< tr>__setitem__ | Wert gemäß Index zuweisen | __getitem__ | Den Wert entsprechend dem Index abrufen td>< /tr> |
__len__ | Länge abrufen |
__cmp__ | Vergleichsoperationen |
< td width="391" valign="top" style="word-break: break-all;">__call__ Funktionsaufruf | < /tr>
__add__ | Addition |
__sub__ | < td width="391" valign="top" style="word-break: break-all;">Subtraktionsoperation
__mul__ | Multiplikation |
< td width="391" valign="top" style="word-break: break-all;">__div__ Divisionsoperation |
__mod__ | < td width="391" valign="top" style="word-break: break-all;">Restoperation
__pow__ | Power |
< /Tabelle>Natürlich müssen wir manchmal relevante Informationen über eine Klasse abrufen. Wir können die folgenden Methoden verwenden:
type(obj): um den entsprechenden Typ des Objekts zu erhalten; (obj, type): Bestimmen Sie, ob das Objekt eine Instanz des angegebenen Typs ist. type
hasattr(obj, attr): Bestimmen Sie, ob das Objekt das angegebene Attribut/die angegebene Methode hat.
getattr(obj, attr[, default]) erhält den Wert des Attributs/der entsprechenden Methode zurückgegeben (vorausgesetzt, dass der Standardwert festgelegt ist), andernfalls wird eine AttributeError-Ausnahme ausgelöst.
setattr(obj, attr, value): Setzt den Wert des Attributs/der Methode, ähnlich wie obj.attr=value;
dir(obj): Sie können eine Liste aller Attribute und Methodennamen des entsprechenden Objekts abrufen:
2. Methodenzugriffskontrolle Tatsächlich können wir Methoden auch als Attribute der Klasse betrachten. Dann ist die Zugriffskontrolle von Methoden dieselbe wie bei Attributen, und es gibt keine tatsächlichen privaten Methoden. Alles hängt davon ab, dass Programmierer sich bewusst an die Python-Programmierstandards halten.
Das Beispiel ist wie folgt, die spezifischen Regeln sind die gleichen wie bei Attributen,
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class User(object):
def upgrade(self):
pass
def _buy_equipment(self):
pass
def __pk(self):
pass
3. Der Methodendekorator @classmethod verwendet die Klasse direkt Beim Aufruf wird die Name-Klasse aufgerufen, kein Objekt
@property Sie können die Methode
genau wie den Zugriff auf Eigenschaften aufrufen. Siehe das spezifische Anwendungsbeispiel:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
lv = 5
def __init__(self, name, age, account):
self.name = name
self._age = age
self.__account = account
def get_account(self):
return self.__account
@classmethod
def get_name(cls):
return cls.lv
@property
def get_age(self):
return self._age
if __name__ == '__main__':
userInfo = UserInfo('两点水', 23, 347073565);
# 打印所有属性
print(dir(userInfo))
# 打印构造函数中的属性
print(userInfo.__dict__)
# 直接使用类名类调用,而不是某个对象
print(UserInfo.lv)
# 像访问属性一样调用方法(注意看get_age是没有括号的)
print(userInfo.get_age)
Das Ergebnis der Ausführung:
nächsten Abschnitt