python class用法_python原類、類的創建過程與方法

【小宅按】今天為大家介紹一下python中與class 相關的知識……

獲取對象的類名

python是一門面向對象的語言,對于一切接對象的python來說,咱們有必要深入的學習與了解一些知識
首先大家都知道,要獲取一個對象所對應的類,需要使用class來進行檢索。
但如果我們只是一個簡單的賦值語句,能這么使用么?讓我們看下下面的代碼:

num=10
string='abc'
class MainClass:pass
p=MainClass()print(num.__class__)
# output: <class 'int'>
print(string.__class__)
# output: <class 'str'>
print(p.__class__)
# output: <class '__main__.MainClass'>

通過上面的代碼我們看到了,不論我們是簡單的賦值操作,還是我們自己去定義一個類,并且通過這個類生成了一個對象。我們都可以使用__class__來查詢對象所對應的方法。此處應該大多數人都是了解的。繼續往下走

將我們眼中的類作為對象

剛才我們通過__class的方式獲取了str、int、還有我們自定義的MainClass這三個類名。
但如果我們繼續把他們作為對象,那么所對應的類是誰呢?讓我們打印下

print(int.__class__) # 或者這么寫:print(num.__class__.__class__)
# output: <class 'type'>
print(str.__class__)
# output: <class 'type'>
print(MainClass.__class__)
# output: <class 'type'>

class 'type' 這是一個什么鬼?

它叫原類,是創造其他類的類…
有人要問了,type就是祖宗了么?還有沒有祖宗的祖宗?你可以自己驗證啊,按照上面的方法
print(type.__class__)
output: <class 'type'>

這下死心了啊,type這個祖宗上面沒有祖宗了。哈哈….

為什么是type

type這個函數我們經常會用到,比如一個對象,我們想知道它是什么類型的,那么我們會使用type(xxx)
那么type它到底是什么?看源碼嘍…

class type(object):"""type(object_or_name, bases, dict)type(object) -> the object's typetype(name, bases, dict) -> a new type"""... ...... ...

看到注釋的時候我們明白了,type有兩個用法

  1. 獲取類型
  2. 創建新type

相信第一點,我們都經常用,否了解。
第二點是干嘛的?讓我們留一個懸念,接著往下看

類的99.99%創建方法

所有人不管是java的還是Python的都明白,創建一個類么,class+類名 OK了
那么你知道你在class+類名,然后賦值或者定義實例方法的時候到底內存做了什么?

class MainClass:name='Uranus'

這個方法應該是比pass高檔一分錢不到的腦殘類了。可你知道在內存中它做了什么么?

  1. 首先他創建了一個變量,變量的名字叫MainClass
  2. 之后python開辟了一塊內存空間,用于創建一個類,類名為ClassMain
  3. 將ClassMain這個變量指向ClassMain
  4. 在這個方法中創建一個dict的字典
  5. dict這個字典指向一個內存空間,存放著{name:Uranus}

和你們想的一樣么?先不說一樣不一樣,估計很多人都要說我是瞎說的…沒關系

介紹0.01%的類創建方法

剛才留了一個疑問,type的第二種用法,用來創建一個新的type
它是做什么的呢?讓我先來演示一段代碼

def func():return 'is a function...'
# 重點在這里
TypeClass=type('MainClass1',(),{'name':'Uranus','func':func})print(TypeClass.__class__)
# output: <class 'type'>print(TypeClass)
# output: <class '__main__.MainClass1'>print(TypeClass.__dict__)
# output: {'__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'MainClass1' objects>, '__dict__': <attribute '__dict__' of 'MainClass1' objects>, '__doc__': None, 'func': <function func at 0x00000000024DDEA0>, 'name': 'Uranus'}print(TypeClass.name)
# output: Uranusprint(TypeClass.func())
# output: is a function...

好了,現在告訴我,TypeClass是什么,是不是一個類?
我在type中做了什么,是不是創建類名,忽略父類,創建類屬性,創建類的實例方法?
傳統的class創建,知識將TypeClass這個變量名設置的和你的類名MainClass1一樣而已
type的第二種方法你會了么?類的創建過程你明白了么?之前你會么?雙擊666吧!

The End

OK,今天的內容就到這里,如果覺得內容對你有所幫助,可以點擊文章右下角的“在看”。
歡迎將這篇文章或我的微信公眾號【清風Python】分享給更多喜歡python的人,謝謝。

更多精彩內容,請滑至頂部點擊右上角關注小宅哦~

v2-bc7bccf0c30165aa177c0ae6cae29137_b.jpg

作者:清風Python

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

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

相關文章

網易公開課

計算機科學及編程導論 http://v.163.com/special/opencourse/bianchengdaolun.html 抽象編程 http://v.163.com/special/opencourse/abstractions.html轉載于:https://www.cnblogs.com/anyboo/archive/2012/08/24/2653537.html

深度學習中的一些常見的激活函數集合(含公式與導數的推導)sigmoid, relu, leaky relu, elu, numpy實現

文章目錄Sigmoid(x)雙曲正切線性整流函數 rectified linear unit &#xff08;ReLu&#xff09;PReLU(Parametric Rectified Linear Unit) Leaky ReLu指數線性單元 Exponential Linear Units &#xff08;ELU&#xff09;感知機激活%matplotlib inline %config InlineBackend.f…

最牛X的GCC 內聯匯編

正如大家知道的&#xff0c;在C語言中插入匯編語言&#xff0c;其是Linux中使用的基本匯編程序語法。本文將講解 GCC 提供的內聯匯編特性的用途和用法。對于閱讀這篇文章&#xff0c;這里只有兩個前提要求&#xff0c;很明顯&#xff0c;就是 x86 匯編語言和 C 語言的基本認識。…

mysql的告警日志_MySQL Aborted connection告警日志的分析

前言&#xff1a;有時候&#xff0c;連接MySQL的會話經常會異常退出&#xff0c;錯誤日志里會看到"Got an error reading communication packets"類型的告警。本篇文章我們一起來討論下該錯誤可能的原因以及如何來規避。1.狀態變量Aborted_clients和Aborted_connects…

hosts多個ip對應一個主機名_一個簡單的Web應用程序,用作連接到ssh服務器的ssh客戶端...

WebSSH一個簡單的Web應用程序&#xff0c;用作連接到ssh服務器的ssh客戶端。它是用Python編寫的&#xff0c;基于tornado&#xff0c;paramiko和xterm.js。特征支持SSH密碼驗證&#xff0c;包括空密碼。支持SSH公鑰認證&#xff0c;包括DSA RSA ECDSA Ed25519密鑰。支持加密密鑰…

Yii框架中使用PHPExcel導出Excel文件

Yii框架中使用PHPExcel導出Excel文件http://www.cnblogs.com/wgx214/p/3709521.html轉載于:https://www.cnblogs.com/flying-tx/p/3714530.html

Shell Notes(1)

> vi復制粘貼 光標移動到要復制的部分的開頭&#xff0c;Esc退出插入模式&#xff0c;按v進入Visual模式&#xff0c;用hjkl選中要復制的部分 按Y或者yy&#xff0c;復制 移動光標到目標位置&#xff0c;按p&#xff0c;粘貼 > echo –e 參數 –e 可以使echo解釋由反斜杠…

mysql多表查詢語句_mysql查詢語句 和 多表關聯查詢 以及 子查詢

1.查詢一張表&#xff1a;select * from 表名&#xff1b;2.查詢指定字段&#xff1a;select 字段1&#xff0c;字段2&#xff0c;字段3….from 表名&#xff1b;3.where條件查詢&#xff1a;select字段1&#xff0c;字段2&#xff0c;字段3 frome表名 where 條件表達式&#x…

Pytorch 自定義激活函數前向與反向傳播 sigmoid

文章目錄Sigmoid公式求導過程優點&#xff1a;缺點&#xff1a;自定義Sigmoid與Torch定義的比較可視化import matplotlib import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn import torch.nn.functional as F%matplotlib inlineplt.rcPa…

SVN錯誤:Attempted to lock an already-locked dir

出現這個問題后使用“清理”功能&#xff0c;如果還不行&#xff0c;就直接到上一級目錄&#xff0c;再執行“清理”&#xff0c;然后再“更新”。有時候如果看到某個包里面的文件夾沒有SVN的標志&#xff0c;直接用“CtrlDelete”手工刪除&#xff0c;然后“清理”&#xff0c…

js高級編程_這位設計師用Processing把創意編程玩到了極致!

Processing作為新媒體從業者的必備工具&#xff0c;近來卻越來越成為設計師們的新寵&#xff01;今天小編將介紹以為用Processing把創意編程玩到極致的設計師Tim Rodenbrker。“我們的世界正在以驚人的速度變化。新技術為創作帶來了根本性的轉變。編程是我們這個時代最寶貴的技…

微軟.NET Framework 4.5.2 RTM正式版

今天&#xff0c;微軟.NET開發團隊發布.NET Framework 4.5.2 RTM正式版。新版框架繼續高度兼容現有的.NET Framework 4、4.5、4.5.1等版本&#xff0c;該版本框架與舊版的.NET Framework 3.5 SP1和早期版本采取不同的處理方式&#xff0c;但與.NET Framework 4、4.5相比&#x…

HDU 1042 N!(高精度計算階乘)

N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34687 Accepted Submission(s): 9711 Problem DescriptionGiven an integer N(0 ≤ N ≤ 10000), your task is to calculate N!InputOne N in one line, pr…

使用WebDriver遇到的那些坑

http://blog.csdn.net/oWuFeng1/article/category/2722111 在做web項目的自動化端到端測試時主要使用的是Selenium WebDriver來驅動瀏覽器。Selenium WebDriver的優點是支持的語言多&#xff0c;支持的瀏覽器多。主流的瀏覽器Chrome、Firefox、IE等都支持&#xff0c;手機上的瀏…

python的閉包要素_Python的閉包

我的理解&#xff0c;Python中的閉包和其他語言中的閉包一樣&#xff0c;都是在一個函數中返回另一個函數。def out_fun(num): print(------1-----) def in_fun(in_num): print(---------2--------) print(in_num%d % in_num) return num in_num print(-------3--------) retu…

Pytorch 自定義激活函數前向與反向傳播 Tanh

看完這篇&#xff0c;你基本上可以自定義前向與反向傳播&#xff0c;可以自己定義自己的算子 文章目錄Tanh公式求導過程優點&#xff1a;缺點&#xff1a;自定義Tanh與Torch定義的比較可視化import matplotlib import matplotlib.pyplot as plt import numpy as np import torc…

multi mysql_mysqld_multi 的使用方法

mysqld_multi 的使用方法:官方文檔&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html 【文檔有些問題&#xff0c;按照它的這個配置&#xff0c;mysqld_multi無法關閉實例】mysqld_multi無法關閉實例的解決方法&#xff1a;https://bugs.mysql.com/bug…

vsftp 無法啟動,500 OOPS: bad bool value in config file for: anonymous_enable

朋友的FTP啟動不了&#xff0c;叫我幫他看&#xff0c;啟動時出現以下錯誤信息&#xff1a; 500 OOPS: bad bool value in config file for: anonymous_enable 看似配置文件錯誤&#xff0c;看了一下配置相應的行&#xff1a; anonymous_enableNO 語句沒什么錯誤&#xff0c;不…

HDU ACM 1181 變形課 (廣搜BFS + 動態數組vector)-------第一次使用動態數組vector

http://acm.hdu.edu.cn/showproblem.php?pid1181 題意&#xff1a;給我若干個單詞,若單詞A的結尾與單詞B的開頭相同,則表示A能變成B,判斷能不能從b開頭變成m結尾. 如: big-got-them 第一次使用動態數組vector View Code 1 #include <iostream>2 #include <vector>…

Max Sum 杭電 1003

2019獨角獸企業重金招聘Python工程師標準>>> #題目概述 題目的意思是給你一個數列&#xff0c;找到一個子數列&#xff0c;這個子數列的和是所有子數列中和最大的。 當然把數列的所有數都列出來肯定不現實。 黑黑&#xff0c;不知道正不正確&#xff0c;我是先從第一…