亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Verwenden Sie type(), um Klassen dynamisch zu erstellen

Da Klassen auch Objekte sind, k?nnen wir Klassen erstellen, w?hrend das Programm l?uft. Python ist eine dynamische Sprache. Der gr??te Unterschied zwischen dynamischen Sprachen und statischen Sprachen besteht darin, dass die Definitionen von Funktionen und Klassen nicht zur Kompilierungszeit definiert, sondern zur Laufzeit dynamisch erstellt werden. Zuvor verstehen wir zun?chst die Funktion type().

Zuerst erstellen wir ein hello.py-Modul und definieren dann eine Hello-Klasse,

class Hello(object):
    def hello(self, name='Py'):
        print('Hello,', name)

Dann verweisen wir auf das Hallo-Modul in einem anderen Modul und geben die entsprechenden Informationen aus. Die Funktion type() wird verwendet, um den Typ eines Typs und einer Variablen anzuzeigen.

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from com.twowater.hello import Hello
h = Hello()
h.hello()
print(type(Hello))
print(type(h))

Was ist das Ausgabeergebnis?

Hello, Py
<class 'type'>
<class 'com.twowater.hello.Hello'>

Wie oben erw?hnt, kann die Funktion type() den Typ eines Typs oder einer Variablen überprüfen. Hallo ist eine Klasse, ihr Typ ist Typ und h ist eine Instanz, ihr Typ ist com.twowater .hello .Hallo. Das vorherige com.twowater ist mein Paketname, und das Hallo-Modul befindet sich unter diesem Paketnamen.

Denken Sie hier mehr darüber nach. Im obigen Beispiel verwenden wir die Funktion type(), um den Typ eines Typs oder einer Variablen zu überprüfen. Der Typ einer Hello-Klasse wird überprüft und das gedruckte Ergebnis ist: <class 'type'> Tats?chlich kann die Funktion type() nicht nur den Typ eines Objekts zurückgeben, sondern auch neue Typen erstellen. Die Definition einer Klasse wird dynamisch zur Laufzeit erstellt. Die Erstellung einer Klasse erfolgt über die Funktion type(). Beispielsweise k?nnen wir die Hello-Klasse im obigen Beispiel über die Funktion type() erstellen. Weitere Informationen finden Sie im folgenden Code:

# -*- coding: UTF-8 -*-
def printHello(self, name='Py'):
    # 定義一個打印 Hello 的函數(shù)
    print('Hello,', name)
# 創(chuàng)建一個 Hello 類
Hello = type('Hello', (object,), dict(hello=printHello))
# 實例化 Hello 類
h = Hello()
# 調(diào)用 Hello 類的方法
h.hello()
# 查看 Hello class 的類型
print(type(Hello))
# 查看實例 h 的類型
print(type(h))

Das Ausgabeergebnis lautet wie folgt:

Hello, Py
<class 'type'>
<class '__main__.Hello'>

Hier: Sie müssen zuerst die Parameterbeschreibung der Funktion type() verstehen, um ein Klassenobjekt zu erstellen:

1 Der Name der Klasse, wie der Name im Beispiel Hallo

Eine Sammlung geerbter übergeordneter Klassen. Wenn es nur eine übergeordnete Klasse gibt, muss das Tupel mit einem einzelnen Element geschrieben werden Da es sich um ein Einzelelement-Tupel handelt, wird es als (Objekt) geschrieben.

3 Der Methodenname der Klasse ist an die Funktion gebunden, im Beispiel ist die Funktion printHello an die Methode gebunden Name hallo Das spezifische Muster in

lautet wie folgt:

Typ (Klassenname, Tupel der übergeordneten Klasse (kann zur Vererbung leer sein), W?rterbuch mit Attributen (Name und Wert))

Okay, nachdem wir die spezifische Parameterverwendung verstanden haben, schauen wir uns die Ausgabeergebnisse an. Wir k?nnen sehen, dass die durch die Funktion type() erstellte Klasse genau das Gleiche ist wie das direkte Schreiben der Klasse, da Python Wenn der Interpreter auf eine Klassendefinition st??t, scannt er lediglich die Syntax der Klassendefinition und ruft dann die Funktion type() auf, um die Klasse zu erstellen.

Aber im Allgemeinen verwenden wir die Methode class ***..., um Klassen zu definieren, aber mit der Funktion type() k?nnen wir auch Klassen erstellen. Mit anderen Worten: Eine dynamische Sprache selbst unterstützt die dynamische Erstellung von Klassen w?hrend der Laufzeit, was sich stark von einer statischen Sprache unterscheidet. Um eine Klasse w?hrend der Laufzeit einer statischen Sprache zu erstellen, müssen Sie eine Quellcodezeichenfolge erstellen und dann den Compiler aufrufen , oder verwenden Sie einige Tools, um einen Wortabschnitt zu generieren Code-Implementierung ist im Wesentlichen eine dynamische Kompilierung, die sehr kompliziert sein kann.

Wie Sie sehen, sind Klassen in Python auch Objekte und Sie k?nnen Klassen dynamisch erstellen. Tats?chlich ist es genau das, was Python hinter den Kulissen tut, wenn Sie das Schlüsselwort class verwenden, und dies wird durch Metaklassen erreicht.

Weiter lernen
||
einreichenCode zurücksetzen