Klassenmethoden

1. Klassenspezifische Methoden

Wenn eine Klasse erstellt wird, enthält sie einige Methoden, hauptsächlich die folgenden Methoden:

Klassenspezifische Methoden ::

< tr>< td width="391" valign="top" style="word-break: break-all;">__call__ < /tr>< td width="391" valign="top" style="word-break: break-all;">Subtraktionsoperation< td width="391" valign="top" style="word-break: break-all;">__div__ < td width="391" valign="top" style="word-break: break-all;">Restoperation < /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:

Weiter lernen

||
einreichenCode zurücksetzen
方法 说明
__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
__setitem__ Wert gemäß Index zuweisen
__getitem__ Den Wert entsprechend dem Index abrufen< /tr>
__len__ Länge abrufen
__cmp__ Vergleichsoperationen
Funktionsaufruf
__add__ Addition
__sub__
__mul__ Multiplikation
Divisionsoperation
__mod__
__pow__ Power