日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python class用法_python原类、类的创建过程与方法

發(fā)布時(shí)間:2023/12/10 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python class用法_python原类、类的创建过程与方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【小宅按】今天為大家介紹一下python中與class 相關(guān)的知識(shí)……

獲取對(duì)象的類名

python是一門面向?qū)ο蟮恼Z(yǔ)言,對(duì)于一切接對(duì)象的python來(lái)說(shuō),咱們有必要深入的學(xué)習(xí)與了解一些知識(shí)
首先大家都知道,要獲取一個(gè)對(duì)象所對(duì)應(yīng)的類,需要使用class來(lái)進(jìn)行檢索。
但如果我們只是一個(gè)簡(jiǎn)單的賦值語(yǔ)句,能這么使用么?讓我們看下下面的代碼:

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'>

通過(guò)上面的代碼我們看到了,不論我們是簡(jiǎn)單的賦值操作,還是我們自己去定義一個(gè)類,并且通過(guò)這個(gè)類生成了一個(gè)對(duì)象。我們都可以使用__class__來(lái)查詢對(duì)象所對(duì)應(yīng)的方法。此處應(yīng)該大多數(shù)人都是了解的。繼續(xù)往下走

將我們眼中的類作為對(duì)象

剛才我們通過(guò)__class的方式獲取了str、int、還有我們自定義的MainClass這三個(gè)類名。
但如果我們繼續(xù)把他們作為對(duì)象,那么所對(duì)應(yīng)的類是誰(shuí)呢?讓我們打印下

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

class 'type' 這是一個(gè)什么鬼?

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

這下死心了啊,type這個(gè)祖宗上面沒(méi)有祖宗了。哈哈….

為什么是type

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

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

看到注釋的時(shí)候我們明白了,type有兩個(gè)用法

  • 獲取類型
  • 創(chuàng)建新type
  • 相信第一點(diǎn),我們都經(jīng)常用,否了解。
    第二點(diǎn)是干嘛的?讓我們留一個(gè)懸念,接著往下看

    類的99.99%創(chuàng)建方法

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

    class MainClass:name='Uranus'

    這個(gè)方法應(yīng)該是比pass高檔一分錢不到的腦殘類了。可你知道在內(nèi)存中它做了什么么?

  • 首先他創(chuàng)建了一個(gè)變量,變量的名字叫MainClass
  • 之后python開(kāi)辟了一塊內(nèi)存空間,用于創(chuàng)建一個(gè)類,類名為ClassMain
  • 將ClassMain這個(gè)變量指向ClassMain
  • 在這個(gè)方法中創(chuàng)建一個(gè)dict的字典
  • dict這個(gè)字典指向一個(gè)內(nèi)存空間,存放著{name:Uranus}
  • 和你們想的一樣么?先不說(shuō)一樣不一樣,估計(jì)很多人都要說(shuō)我是瞎說(shuō)的…沒(méi)關(guān)系

    介紹0.01%的類創(chuàng)建方法

    剛才留了一個(gè)疑問(wèn),type的第二種用法,用來(lái)創(chuàng)建一個(gè)新的type
    它是做什么的呢?讓我先來(lái)演示一段代碼

    def func():return 'is a function...' # 重點(diǎn)在這里 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...

    好了,現(xiàn)在告訴我,TypeClass是什么,是不是一個(gè)類?
    我在type中做了什么,是不是創(chuàng)建類名,忽略父類,創(chuàng)建類屬性,創(chuàng)建類的實(shí)例方法?
    傳統(tǒng)的class創(chuàng)建,知識(shí)將TypeClass這個(gè)變量名設(shè)置的和你的類名MainClass1一樣而已
    type的第二種方法你會(huì)了么?類的創(chuàng)建過(guò)程你明白了么?之前你會(huì)么?雙擊666吧!

    The End

    OK,今天的內(nèi)容就到這里,如果覺(jué)得內(nèi)容對(duì)你有所幫助,可以點(diǎn)擊文章右下角的“在看”。
    歡迎將這篇文章或我的微信公眾號(hào)【清風(fēng)Python】分享給更多喜歡python的人,謝謝。

    更多精彩內(nèi)容,請(qǐng)滑至頂部點(diǎn)擊右上角關(guān)注小宅哦~


    作者:清風(fēng)Python

    總結(jié)

    以上是生活随笔為你收集整理的python class用法_python原类、类的创建过程与方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。