python中object是什么類型_Python 的 type 和 object 之間是怎么一種關系?

class,metaclass,instance,subclass,base

以下成立:

對任意的A,A是instance(推論:任意class也是instance)

對任意A,存在B,使得B是A的class

A是class 定義為 從A可以創建B(直接或間接),使得B是A的instance

A是B的metaclass 等價于 B是class,且A是B的class(也就是class的class)

A是metaclass等價于A是class,且從A創建的instance B是class

推論:對任意A是class,存在B使得B是A的metaclass

type的metaclass是type自己

對A和B是class,A是B的base等價于B是A的subclass(這里為了防歧義規定A不是A的subclass,可能與iasubclass不同)

A是B的base,則B不是A的base

A是B的instance當且僅當:B是A的class,或B是A的class的base

object是所有其他class的base(推論:任意A是object的instance,包括object)

推論:沒有類是object的base

type是所有其他metaclass的base

推論:object是type的base

type是object的metclass

type是type的class/metaclass

type是type的instance

object是object的instance

type是object的instance

object是type的instance

注意:metaclass的base不一定是metaclass

class與instance,base與subclass只是兩種正交的關系,它們通過isinstance相互聯系,在Python中并不要求它們有先后順序

=================================================

我補充一下什么叫做“不要求有先后順序”,實際上在Python當中自定義類的__bases__,自定義實例的__class__是可以修改的……

>>> class A(object): pass

...

>>> class B(object): pass

...

>>> class C(A): pass

...

>>> c = C()

>>> c.__class__

>>> C.__bases__

(,)

>>> isinstance(c, C)

True

>>> isinstance(c, A)

True

>>> isinstance(c, B)

False

>>> issubclass(C, A)

True

>>> issubclass(C, B)

False

>>> C.__bases__ = (B,)

>>> issubclass(C, A)

False

>>> issubclass(C, B)

True

>>> isinstance(c, A)

False

>>> isinstance(c, B)

True

>>> c.__class__ = A

>>> isinstance(c, C)

False

>>> isinstance(c, B)

False

>>> isinstance(c, A)

True

本質上來說就是一個指向的關系,想怎么改就可以怎么改,只要不違背我上面所說的法則就行。Python里的class和instance就是這樣沒有節操的東西……

我們下面來造一個A是B的metaclass,B是A的base的例子:

>>> class A(type): pass

...

>>> class B(metaclass=A): pass

...

>>> A.__bases__ = (type, B)

>>> isinstance(B, A)

True

>>> issubclass(A, B)

True

>>> isinstance(B, B)

True

由于Python實現的問題,不是所有的__bases__和__class__都可以隨意指定(有一些限制),但大體上可以理解為就是個可以改的指針

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538974.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538974.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538974.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java8新生代_jdk8.0的jvm詳情

jstat命令可以查看堆內存各部分的使用量,以及加載類的數量。命令的格式如下:jstat [-命令選項] [vmid] [間隔時間/毫秒] [查詢次數]注意:使用的jdk版本是jdk8.[work16-11-118qf-pms]$ jstat -class 32417Loaded?? Bytes?? Unloaded?? B…

Java中的Runnable、Callable、Future、FutureTask的區別與示例

原文地址:http://blog.csdn.net/bboyfeiyu/article/details/24851847 --------------------------------------------------------- Java中存在Runnable、Callable、Future、FutureTask這幾個與線程相關的類或者接口,在Java中也是比較重要的幾個概念&am…

sql count為空時顯示0_C0010負坐標顯示為正數+紅色0值參考線

小伙伴們早上好啊!今天繼續為大家分享柱形圖的美化技巧。希望大家認真閱讀Excel文件和教程,有的圖表看起來簡單,實際上在細節處理上用了很多技巧,大家要多多體會。C0010-負坐標顯示為正數紅色0值參考線效果圖圖表概述本圖可以用來…

配置IISExpress允許外部訪問

配置IISExpress允許外部訪問 1.找到IISExpress的配置文件&#xff0c;位于 <文檔>/IISExpress/config文件夾下&#xff0c;打開applicationhost.config&#xff0c;找到如下代碼&#xff1a;<site name"WebSite1" id"1" serverAutoStart"tru…

python布爾測試對象_python布爾類型和邏輯運算

布爾類型 python中True表示真&#xff0c;False表示假&#xff0c;它們是布爾類型&#xff1a;1 2>>> type(True) 在python中&#xff0c;bool的True和False是數值1和0的字符串表示格式&#xff0c;實際上bool類型是int類型的一個子類。1 2>>> bool.__bases_…

mac預裝的php路徑,Mac使用系統自帶php和Apache

最美的語言本文將介紹在Mac環境下如何使用系統本身所帶有的Apache(阿帕奇服務器)通過預裝的PHP版本來運行PHP的相關代碼&#xff0c;相對來講在OS X系統下相對好配置一些&#xff0c;因為Apache和PHP都預裝好了&#xff0c;如果是Windows環境我們需要自己安裝ApachePHPMysql(通…

線程池與Callable更配哦

概述 Callable介紹見&#xff1a;http://blog.csdn.net/zengmingen/article/details/53288119 多線程介紹見&#xff1a;http://blog.csdn.net/zengmingen/article/details/53284999 代碼 TaskCallable.javapackage multithreading.pool;import java.util.concurrent.Callabl…

IP編址,IP地址介紹與子網劃分方法

網絡層位于數據鏈路層與傳輸層之間。網絡層中包含了許多協議&#xff0c;其中最為重要的協議就是IP協議。網絡層提供了IP路由功能。理解IP路由除了要熟悉IP協議的工作機制之外&#xff0c;還必須理解IP編址以及如何合理地使用IP地址來設計網絡。 上層協議類型 以太網幀中的Typ…

3- OpenCV+TensorFlow 入門人工智能圖像處理-TensorFlow入門

tensorflow基礎入門 思考一個問題: 如何剛好學習TensorFlow 類比為一門開發語言&#xff0c;學會語法&#xff0c;api的調用&#xff0c; 原理性掌握。語言的要素: 基礎數據類型 運算符 流程 字典 數組 import tensorflow as tf# 常量&#xff0c;指定數據類型 data1 tf.const…

r 函數返回多個值_第四講 R描述性統計分析

在“R與生物統計專題”中&#xff0c;我們會從介紹R的基本知識展開到生物統計原理及其在R中的實現。以從淺入深&#xff0c;層層遞進的形式在投必得醫學公眾號更新。在上一講中&#xff0c;我們介紹了第三講 R編程基礎-矩陣和數據框 (戳這里即可跳轉)。到現在為止&#xff0c;大…

python雙線性插值函數_雙線性插值法原理 python實現

碼字不易&#xff0c;如果此文對你有所幫助&#xff0c;請幫忙點贊&#xff0c;感謝&#xff01;一. 雙線性插值法原理&#xff1a;① 何為線性插值&#xff1f;插值就是在兩個數之間插入一個數&#xff0c;線性插值原理圖如下&#xff1a;在位置 x 進行線性插值&#xff0c;插…

張恩民 php,php100教程_php100張恩民php視頻 56課時_網站編程_寂涯網絡學習基地

1、PHP基本語法和數據類型&#xff1a;(1)、PHP基本語法&#xff1a;1、htm 和 php 混編2、一個語句以 ; (分號結束)3、如何定義一個變量&#xff0c;和變量的使用(2)、PHP數據運算類型四種標量類型&#xff1a;boolean(布爾型)integer(整型)float(浮點型&#xff0c;也作“do…

Oracle 自帶sqldeveloper導入數據到表

步驟 1、建一張字段名和類型與要導入數據一致的表。 2、如果是excel文件&#xff0c;另存為 csv文件。 因為excel文件遇到空格會報錯&#xff0c;excel文件太大工具會讀取文件失敗。 而csv文件是秒級讀取&#xff0c;有空格也會導入不會報錯。 ------------- 更多的Java&am…

百度騰訊中興華為全部入局Linux Foundation深度學習基金會

2019獨角獸企業重金招聘Python工程師標準>>> 雖然名字叫做Linux Foundation&#xff0c;但是這家基金會關注的領域并不局限在Linux操作系統領域。事實上&#xff0c;Linux Foundation基金會還為很多其他開源基金和項目提供支持&#xff0c;比如Cloud Foundry、Autom…

python判斷點在矩形內_判斷平面內矩形和圓是否有交點的python實現

#! /usr/bin/env python# -*- coding: utf-8 -*-filename : 平面坐標內矩形與圓是否相交usage :authors : U{peterguo}copyright: tencentdate : 2012.08.21version : 1.0.0.0Modified History:2012.08.21 創建import osimport sysimport reimport urllib2import timeimport da…

python讀取mysql數據庫_Python操作MySQL數據庫9個實用實例

在Windows平臺上安裝mysql模塊用于Python開發 用python連接mysql的時候&#xff0c;需要用的安裝版本&#xff0c;源碼版本容易有錯誤提示。下邊是打包了32與64版本。 MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.3.win-amd64-py2.7.exe 實例 1、取得 MYSQL 的版本 #…

win主機上搭建php網站運行環境,Windows server 2008搭建php運行環境圖文詳解(php5.3)

這篇文章主要為大家分享下Windows server 2008搭建php運行環境的步驟&#xff0c;需要的朋友可以參考下下載php組件包首先到http://windows.php.net/download/下載你需要的php版本&#xff0c;這里我下載的是php5.3。下面解壓php組件 包到磁盤上。安裝Microsoft Visual C 2008 …

python 登陸微博 被刪除 token_爬取微博信息,使用了cookie仍然無法登錄微博

按照網上的模板自己寫了類似的代碼爬取微博&#xff0c;可是response回來的html是登錄界面的html&#xff0c;應該是沒有成功登陸微博&#xff0c;但是和網上的代碼是基本一樣的from bs4 import BeautifulSoupimport pandas as pdimport requestsurl "https://weibo.cn/2…

plsql developer連接oracle--本地不安裝oracle

工具 數據庫開發程序 PLSQL Developer oracle 客戶端 instantclient&#xff0c;點擊下載 &#xff08;下載與oracle相同版本或最新版本&#xff0c;如果 PLSQL Developer是32位&#xff0c;則要下載32位的&#xff09;安裝 1、解壓oracle客戶端 到盤某個目錄。我的目錄是C:\or…

ubuntu networking 與 network-manager

剛遇到的坑&#xff0c;因為操作不當導致網絡中斷&#xff0c;于是手動配置了/etc/network/interfaces , 修復了系統之后發現ubuntu-desktop中的有線鏈接不見了&#xff0c;百度了一下說是networking服務和network-manger服務會起沖突。 【Server版本】 在UbuntuServer版本中&…