一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python用內(nèi)省優(yōu)化顯示介紹

jf_78858299 ? 來源:梯閱線條 ? 作者:梯閱線條 ? 2023-02-27 14:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.1 class

用法

instance.__class__

描述

獲取實(shí)例所屬類。為實(shí)例屬性。

示例

>>> class MyClass:pass
>>> c1=MyClass()
>>> c1
<__main__.MyClass object at 0x03D19C50>
# __class__ 返回實(shí)例所屬類
>>> c1.__class__

# 用返回的類創(chuàng)建實(shí)例對(duì)象
>>> c2=c1.__class__()
>>> c2
<__main__.MyClass object at 0x03D19CF0>

1.2 class.name

用法

instance.__class__.__name__

描述

獲取實(shí)例所屬類的名字。返回字符串。

示例

>>> class MyClass:pass
>>> c1=MyClass()
>>> c1=MyClass()
# __name__ 返回實(shí)例所屬類的名字
>>> c1.__class__.__name__
'MyClass'

1.3 bases

用法

類.__bases__

描述

返回該類的直接超類組成的元組

示例

>>> class MyClass:pass
>>> class MyClassA(MyClass):pass
>>> class MyClassB():pass
# __bases__ 返回直接超類組成的元組
>>> MyClassC.__bases__
(, )

1.4 dict

類和實(shí)例的屬性字典。

實(shí)例無(wú)本身屬性則為空。

>>> class MyClass:
   s='梯閱線條'
   def f1(self):pass
>>> c1=MyClass()
# __dict__ 查看類的屬性字典,
# 前后帶雙下劃線的為內(nèi)置屬性 , 其他為自定義屬性
>>> MyClass.__dict__.keys()
dict_keys(['__module__', 's', 'f1', '__dict__', '__weakref__', '__doc__'])
>>> c1.__dict__.keys()
dict_keys([])
>>> c1.a=9555
>>> c1.__dict__.keys()
dict_keys(['a'])
>>> c1.s='tyxt'
# __dict__ 查看實(shí)例的屬性字典,
# 只返回實(shí)例賦值的屬性,不返回類的屬性
>>> c1.__dict__.keys()
dict_keys(['a', 's'])
>>> MyClass.__dict__.keys()
dict_keys(['__module__', 's', 'f1', '__dict__', '__weakref__', '__doc__'])

1.5 _X

python類內(nèi)定義的_X:

(1)單下劃線開頭的變量名,_X通常在工具類中用于避免與子類的命名沖突。

比如,子類繼承了一個(gè)工具類,然后定義了一個(gè)同名變量,那么會(huì)取到子類的變量,而實(shí)際想使用工具類里面的變量。此時(shí),在工具類通過單下劃下命名變量,可以很大程度上避免沖突。

(2)_X一般只在類內(nèi)調(diào)用,不在類外調(diào)用。

1.6 __X

python類內(nèi)定義的__X

(1) 雙下劃線開頭的變量名,__X為偽私有類屬性。

(2) 自動(dòng)在*_X前面加“*類名”。

示例

>>> class MyClass:
   def me1(self):pass
   def _me2(self):pass
   def __me3(self):pass

>>> [x for x in dir(MyClass) if not x.endswith('__')]
['_MyClass__me3', '_me2', 'me1']

1.7 getattr()

用法

getattr(object, name[, default])

描述

返回對(duì)象的屬性值。

obejct:對(duì)象(類對(duì)象或?qū)嵗龑?duì)象)

name:屬性名的字符串

default:不存在屬性時(shí)返回的默認(rèn)值,不存在屬性未給默認(rèn)值則報(bào)錯(cuò)

示例

>>> class MyClass:
   s='梯閱線條'
   def f1(self):
       print('f1')
# getattr 第一個(gè)參數(shù)為 對(duì)象 object
# 第二個(gè)參數(shù)為 字符串屬性名
# 返回?cái)?shù)據(jù)屬性值
>>> getattr(MyClass,'s')
'梯閱線條'
# 返回行為屬性值
>>> getattr(MyClass,'f1')

1.8 示例-優(yōu)化顯示

通過內(nèi)省工具getattr()和 class .name 動(dòng)態(tài)顯示屬性值。

文件

myclasstools.py

class ShowAttr:
   def collectAttrs(self):
       attrs = []
       for k in sorted(self.__dict__):
           attrs.append('{}={}'.format(k,getattr(self,k)))
       return ','.join(attrs)
   
   def __str__(self):
       return '{}:{}'.format(self.__class__.__name__,self.collectAttrs())

myperson.py

from myclasstools import ShowAttr
class MyPerson(ShowAttr):
   def __init__(self,name,job = None,pay = 0):
       self.name = name
       self.job = job
       self.pay = pay
   def payraise(self,rate):
       self.pay = int(self.pay * (1 + rate))
   #def __str__(self):
       #return 'MyPerson:name={0.name},job={0.job},pay={0.pay}'.format(self)

class MyManager(MyPerson):
   def __init__(self,name,job = 'mgr',pay = 0):
       MyPerson.__init__(self,name,job,pay)
   def payraise(self,rate,bonus=0.1):
       MyPerson.payraise(self,rate+bonus)
       
if __name__ == '__main__':
   mp1 = MyPerson('mp1')
   mp2 = MyPerson('mp2','c++開發(fā)',20000)
   mm1 = MyManager('mm1','開發(fā)經(jīng)理',50000)
   
   print(mp1)
   print(mp2)
   print(mm1)
   
   mp2.payraise(0.1)
   mm1.payraise(0.1)
   print(mp2)
   print(mm1)

執(zhí)行

E:\\documents\\F盤>python myperson.py
MyPerson:job=None,name=mp1,pay=0
MyPerson:job=c++開發(fā),name=mp2,pay=20000
MyManager:job=開發(fā)經(jīng)理,name=mm1,pay=50000
MyPerson:job=c++開發(fā),name=mp2,pay=22000
MyManager:job=開發(fā)經(jīng)理,name=mm1,pay=60000
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3686

    瀏覽量

    95037
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86457
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用Rust優(yōu)化Python性能

    在數(shù)據(jù)分析領(lǐng)域Python無(wú)疑是最流行的編程語(yǔ)言,但是Python有一個(gè)硬傷就是作為一個(gè)編譯語(yǔ)言在性能上有些微的欠缺。而同樣最流行的語(yǔ)言Rust則在性能方面表現(xiàn)優(yōu)秀。本文我們一起學(xué)習(xí)一個(gè)優(yōu)化項(xiàng)目的實(shí)踐,對(duì)一個(gè)數(shù)據(jù)分析程序,改為R
    的頭像 發(fā)表于 11-01 15:59 ?1660次閱讀
    使用Rust<b class='flag-5'>優(yōu)化</b><b class='flag-5'>Python</b>性能

    詳細(xì)Python寫網(wǎng)絡(luò)爬蟲

    詳細(xì)Python寫網(wǎng)絡(luò)爬蟲
    發(fā)表于 09-07 08:40 ?32次下載
    詳細(xì)<b class='flag-5'>用</b><b class='flag-5'>Python</b>寫網(wǎng)絡(luò)爬蟲

    Python性能優(yōu)化

    Python性能優(yōu)化的20條建議2016-07-05 17:38 1、優(yōu)化算法時(shí)間復(fù)雜度 算法的時(shí)間復(fù)雜度對(duì)程序的執(zhí)行效率影響最大,在Python中可以通過選擇合適的數(shù)據(jù)結(jié)構(gòu)來
    發(fā)表于 10-10 10:31 ?0次下載

    Python應(yīng)用與優(yōu)化所必備的6個(gè)基本庫(kù)

    無(wú)論你是想快速入手Python還是想為Python應(yīng)用程序構(gòu)建本地UI,亦或者對(duì)Python代碼進(jìn)行優(yōu)化,本文列舉的6個(gè)庫(kù),都有可能會(huì)幫到你。 由于具有易于使用的優(yōu)勢(shì),
    發(fā)表于 11-15 11:40 ?2846次閱讀

    解析c++語(yǔ)言的Qt內(nèi)省機(jī)制

    所謂 內(nèi)省 是指面向?qū)ο笳Z(yǔ)言的一種在運(yùn)行期間查詢對(duì)象信息的能力, 比如如果該語(yǔ)具有運(yùn)行期間檢查對(duì)象型別的能力,那么我們稱它是型別 內(nèi)省 (type intropection)的,型別 內(nèi)省 可以用
    發(fā)表于 12-15 10:22 ?1552次閱讀

    Python 3.8.1有什么新功能和優(yōu)化

    距離 Python 3.8.1 rc1發(fā)布沒多久的時(shí)間,目前,Python 3.8.1 也已正式發(fā)布。Python 3.8.1是Python 3.8的第一個(gè)維護(hù)版本,
    的頭像 發(fā)表于 12-23 10:56 ?3511次閱讀

    Python寫網(wǎng)絡(luò)爬蟲

    Python寫網(wǎng)絡(luò)爬蟲的方法說明。
    發(fā)表于 06-01 11:55 ?21次下載

    自學(xué)python單片機(jī)編程-Python語(yǔ)言控制單片機(jī)

    自學(xué)python單片機(jī)編程-Python語(yǔ)言控制單片機(jī)
    發(fā)表于 11-13 17:36 ?40次下載
    自學(xué)<b class='flag-5'>python</b>單片機(jī)編程-<b class='flag-5'>用</b><b class='flag-5'>Python</b>語(yǔ)言控制單片機(jī)

    Python學(xué)習(xí)科學(xué)編程

    Python學(xué)習(xí)科學(xué)編程,Python經(jīng)典教材。
    發(fā)表于 03-09 15:00 ?0次下載

    介紹python列表的邊界和嵌套

    本文介紹python列表的邊界和嵌套。只能訪問python列表范圍內(nèi)的項(xiàng),python列表可以嵌套python列表。
    的頭像 發(fā)表于 02-27 14:49 ?1197次閱讀

    Python寫個(gè)小工具網(wǎng)頁(yè)

    簡(jiǎn)簡(jiǎn)單單的 Python 擼一個(gè)計(jì)算年齡的工具網(wǎng)頁(yè),不用對(duì)前端特別熟悉,只要專注于工具的邏輯,其他都交給 Python 吧。
    的頭像 發(fā)表于 03-03 14:52 ?1696次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Python</b>寫個(gè)小工具網(wǎng)頁(yè)

    優(yōu)化Python代碼有哪些工具

    Python是一種強(qiáng)大的編程語(yǔ)言,但在面對(duì)復(fù)雜項(xiàng)目和緊迫的時(shí)間要求時(shí),提高Python的使用效率變得至關(guān)重要。為此,以下是詳細(xì)介紹十大工具,它們可以幫助您加速開發(fā)流程、提高編程體驗(yàn)并優(yōu)化
    的頭像 發(fā)表于 07-24 09:28 ?1740次閱讀

    python有什么 如何用python創(chuàng)建數(shù)據(jù)庫(kù)

    python有什么 如何用python創(chuàng)建數(shù)據(jù)庫(kù) Python是一種高級(jí)編程語(yǔ)言,可以用于開發(fā)各種類型的應(yīng)用程序和工具。它的廣泛應(yīng)用使它在編程領(lǐng)域中極為受歡迎。
    的頭像 發(fā)表于 08-28 16:41 ?1482次閱讀

    python shell怎么

    Python Shell是一種交互式解釋器,可以通過命令行直接運(yùn)行Python代碼。在Shell中,可以輸入一行代碼并立即得到結(jié)果,非常適合于測(cè)試、嘗試新代碼或進(jìn)行簡(jiǎn)單的任務(wù)。本文將詳細(xì)介紹
    的頭像 發(fā)表于 11-29 14:36 ?1740次閱讀

    python寫驗(yàn)證環(huán)境cocotb

    本文介紹了cocotb的安裝、python tb文件的寫法、xrun仿真cocotb的腳本等,我們來看看體驗(yàn)如何。
    的頭像 發(fā)表于 07-24 09:38 ?992次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>python</b>寫驗(yàn)證環(huán)境cocotb