Heim Backend-Entwicklung Python-Tutorial Python中类型关系和继承关系实例详解

Python中类型关系和继承关系实例详解

Jun 10, 2016 pm 03:11 PM
python

本文详细介绍了Python中类型关系和继承关系。分享给大家供大家参考。具体分析如下:

如果一个对象A持有另一个对象B的ID,那么检索到A之后就可以检索到B,我们就说存在一个A到B的导航。这种导航关系使得Python中所有对象之间形成了一个复杂的网络结构。

Python程序的运行包括:

1. 修改这个网络结构;
2. 执行有副作用的代码对象(code object或者说bytecode,见Python Language Reference 3.2)
(副作用是指影响Python虚拟机之外的设备,这些代码都是用C或者别的语言写的,Python写的代码只能完成第一步的功能。print语句除外。)

Python对象之间有两种导航关系:继承关系和类型关系,是Python中最基本的关系。类型关系说明一个对象是通过哪个对象创建的;继承关系说明对象之间的父子关系,这种父子关系在名字的解析过程中起到作用。这里我首先说New Style类之间的这两种关系,掌握了New Style类的关系后,再来说明Classic类就容易了。

首先需要说明一下的是内置模块中的type是什么。大家都知道type可以用来判断一个对象的类型,好像是一个函数。实际上在2.2中type是一个类,而且不是普通的类,是一个可以创建类的类,称为元类。你运行type(type)试一下,打印的是。type类是Python类型系统的核心。用type作为一个判断类型的函数使用是比较特殊的情况,或许是由历史原因造成的,用typeof或许更合适。

如何构造一个类型

你肯定知道是用class语句。但是实际上,在Python核心看来,只有一种方式,那就是调用type的构造函数(因为type是一个类型)。当运行:

class A(object): 
 def f(self): print 1

Nach dem Login kopieren

Python解析器就会执行如下代码所示功能:

def f(self): print 1
A=type('A', (object,), ) # 参数为(名字, 父类tuple,成员dict)
del f

Nach dem Login kopieren

两者效果几乎是一样的,你可以试一下。

类型关系的确定除了使用type之外,还可以使用__class__属性。如:

class A(object): pass
a=A()     
a.__class__ # 'class __main__.A'
A.__class__ # 'type '
type.__class__ # 'type '
type.__class__.__class__ # 'type '
type.__class__ is type.__class.__class__ # True

Nach dem Login kopieren

继承关系

继承关系只发生在类型之间,继承关系构成一个有向图。所有的类型都是从object继承来的。“所有的”当然也包括type。object的父类还是object。object作为一个类型对象也是有其类型的,这个类型就是type。所以object和type之间的关系就好比先有鸡还是先有蛋的问题了:type是从object继承的(继承关系);object是由type生成的(类型关系)。通过issubclass或者__bases__属性来判断两个类之间的继承关系。

那么从type继承意味着什么呢?那意味着这个类的类型是type,同时父类也是type。但是这种做法在一般的编程中是没有什么意义的(却是meta programmming的核心)。因为一般都用class语句,而不是通过调用type的构造函数来创建类型对象。为了说明语法还是举个例子:

class mytype(type): pass
A=mytype('A', (object,), {}) # 
del f
A.__class__ # class '__main__.mytype',元类为mytype
mytype.__class__ # 'type '

Nach dem Login kopieren

在用class定义一个类时,会间接调用type的构造函数。但是通过设置__metaclass__属性,可以不去调用type,而是调用type的子类。如:

class A(object):
 __metaclass__ = mytype
A.__class__ # class '__main__.mytype' ,和上面的方式结果一样。

Nach dem Login kopieren

由此,Python对象的类型关系组成了一个树型结构,其中type处于树的根部,由type或者type的子类构造的类型,包括class定义的类(间接调用type),调用type、type的子类构造函数创建的类,int list等系统定义类型处于中间节点,叶节点为instance对象。type本身的类型是什么呢?还是type。这和根目录的父目录还是根目录是一样的。

Classic类不同于New Style类的地方就是当用class创建一个类时,不是间接调用type,而是间接调用types.ClassType,而types.ClassType是由type创建的。

class A: pass
type(A) # type 'classobj',注意没有__class__属性。
type(A) is types.ClassType # True
types.ClassType.__class__ # 'type'

Nach dem Login kopieren

希望本文所述对大家的Python程序设计有所帮助。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP und Python: Code Beispiele und Vergleich PHP und Python: Code Beispiele und Vergleich Apr 15, 2025 am 12:07 AM

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

Wie man ein Pytorch -Modell auf CentOS trainiert Wie man ein Pytorch -Modell auf CentOS trainiert Apr 14, 2025 pm 03:03 PM

Effizientes Training von Pytorch -Modellen auf CentOS -Systemen erfordert Schritte, und dieser Artikel bietet detaillierte Anleitungen. 1.. Es wird empfohlen, YUM oder DNF zu verwenden, um Python 3 und Upgrade PIP zu installieren: Sudoyumupdatepython3 (oder sudodnfupdatepython3), PIP3Install-upgradepip. CUDA und CUDNN (GPU -Beschleunigung): Wenn Sie Nvidiagpu verwenden, müssen Sie Cudatool installieren

Python gegen JavaScript: Community, Bibliotheken und Ressourcen Python gegen JavaScript: Community, Bibliotheken und Ressourcen Apr 15, 2025 am 12:16 AM

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Wie ist die GPU -Unterstützung für Pytorch bei CentOS? Wie ist die GPU -Unterstützung für Pytorch bei CentOS? Apr 14, 2025 pm 06:48 PM

Aktivieren Sie die Pytorch -GPU -Beschleunigung am CentOS -System erfordert die Installation von CUDA-, CUDNN- und GPU -Versionen von Pytorch. Die folgenden Schritte führen Sie durch den Prozess: Cuda und Cudnn Installation Bestimmen Sie die CUDA-Version Kompatibilität: Verwenden Sie den Befehl nvidia-smi, um die von Ihrer NVIDIA-Grafikkarte unterstützte CUDA-Version anzuzeigen. Beispielsweise kann Ihre MX450 -Grafikkarte CUDA11.1 oder höher unterstützen. Download und installieren Sie Cudatoolkit: Besuchen Sie die offizielle Website von Nvidiacudatoolkit und laden Sie die entsprechende Version gemäß der höchsten CUDA -Version herunter und installieren Sie sie, die von Ihrer Grafikkarte unterstützt wird. Installieren Sie die Cudnn -Bibliothek:

Detaillierte Erklärung des Docker -Prinzips Detaillierte Erklärung des Docker -Prinzips Apr 14, 2025 pm 11:57 PM

Docker verwendet Linux -Kernel -Funktionen, um eine effiziente und isolierte Anwendungsumgebung zu bieten. Sein Arbeitsprinzip lautet wie folgt: 1. Der Spiegel wird als schreibgeschützte Vorlage verwendet, die alles enthält, was Sie für die Ausführung der Anwendung benötigen. 2. Das Union File System (UnionFS) stapelt mehrere Dateisysteme, speichert nur die Unterschiede, speichert Platz und beschleunigt. 3. Der Daemon verwaltet die Spiegel und Container, und der Kunde verwendet sie für die Interaktion. 4. Namespaces und CGroups implementieren Container -Isolation und Ressourcenbeschränkungen; 5. Mehrere Netzwerkmodi unterstützen die Containerverbindung. Nur wenn Sie diese Kernkonzepte verstehen, können Sie Docker besser nutzen.

So wählen Sie die Pytorch -Version unter CentOS aus So wählen Sie die Pytorch -Version unter CentOS aus Apr 14, 2025 pm 02:51 PM

Bei der Auswahl einer Pytorch -Version unter CentOS müssen die folgenden Schlüsselfaktoren berücksichtigt werden: 1. Cuda -Version Kompatibilität GPU -Unterstützung: Wenn Sie NVIDIA -GPU haben und die GPU -Beschleunigung verwenden möchten, müssen Sie Pytorch auswählen, der die entsprechende CUDA -Version unterstützt. Sie können die CUDA-Version anzeigen, die unterstützt wird, indem Sie den Befehl nvidia-smi ausführen. CPU -Version: Wenn Sie keine GPU haben oder keine GPU verwenden möchten, können Sie eine CPU -Version von Pytorch auswählen. 2. Python Version Pytorch

Miniopen CentOS -Kompatibilität Miniopen CentOS -Kompatibilität Apr 14, 2025 pm 05:45 PM

Minio-Objektspeicherung: Hochleistungs-Bereitstellung im Rahmen von CentOS System Minio ist ein hochleistungsfähiges, verteiltes Objektspeichersystem, das auf der GO-Sprache entwickelt wurde und mit Amazons3 kompatibel ist. Es unterstützt eine Vielzahl von Kundensprachen, darunter Java, Python, JavaScript und Go. In diesem Artikel wird kurz die Installation und Kompatibilität von Minio zu CentOS -Systemen vorgestellt. CentOS -Versionskompatibilitätsminio wurde in mehreren CentOS -Versionen verifiziert, einschließlich, aber nicht beschränkt auf: CentOS7.9: Bietet einen vollständigen Installationshandbuch für die Clusterkonfiguration, die Umgebungsvorbereitung, die Einstellungen von Konfigurationsdateien, eine Festplattenpartitionierung und Mini

So installieren Sie Nginx in CentOS So installieren Sie Nginx in CentOS Apr 14, 2025 pm 08:06 PM

Die Installation von CentOS-Installationen erfordert die folgenden Schritte: Installieren von Abhängigkeiten wie Entwicklungstools, PCRE-Devel und OpenSSL-Devel. Laden Sie das Nginx -Quellcode -Paket herunter, entpacken Sie es, kompilieren Sie es und installieren Sie es und geben Sie den Installationspfad als/usr/local/nginx an. Erstellen Sie NGINX -Benutzer und Benutzergruppen und setzen Sie Berechtigungen. Ändern Sie die Konfigurationsdatei nginx.conf und konfigurieren Sie den Hörport und den Domänennamen/die IP -Adresse. Starten Sie den Nginx -Dienst. Häufige Fehler müssen beachtet werden, z. B. Abhängigkeitsprobleme, Portkonflikte und Konfigurationsdateifehler. Die Leistungsoptimierung muss entsprechend der spezifischen Situation angepasst werden, z. B. das Einschalten des Cache und die Anpassung der Anzahl der Arbeitsprozesse.

See all articles