女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python用內省優化顯示介紹

jf_78858299 ? 來源:梯閱線條 ? 作者:梯閱線條 ? 2023-02-27 14:48 ? 次閱讀

1.1 class

用法

instance.__class__

描述

獲取實例所屬類。為實例屬性。

示例

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

# 用返回的類創建實例對象
>>> c2=c1.__class__()
>>> c2
<__main__.MyClass object at 0x03D19CF0>

1.2 class.name

用法

instance.__class__.__name__

描述

獲取實例所屬類的名字。返回字符串。

示例

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

1.3 bases

用法

類.__bases__

描述

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

示例

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

1.4 dict

類和實例的屬性字典。

實例無本身屬性則為空。

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

1.5 _X

python類內定義的_X:

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

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

(2)_X一般只在類內調用,不在類外調用。

1.6 __X

python類內定義的__X

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

(2) 自動在*_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])

描述

返回對象的屬性值。

obejct:對象(類對象或實例對象)

name:屬性名的字符串

default:不存在屬性時返回的默認值,不存在屬性未給默認值則報錯

示例

>>> class MyClass:
   s='梯閱線條'
   def f1(self):
       print('f1')
# getattr 第一個參數為 對象 object
# 第二個參數為 字符串屬性名
# 返回數據屬性值
>>> getattr(MyClass,'s')
'梯閱線條'
# 返回行為屬性值
>>> getattr(MyClass,'f1')

1.8 示例-優化顯示

通過內省工具getattr()和 class .name 動態顯示屬性值。

文件

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++開發',20000)
   mm1 = MyManager('mm1','開發經理',50000)
   
   print(mp1)
   print(mp2)
   print(mm1)
   
   mp2.payraise(0.1)
   mm1.payraise(0.1)
   print(mp2)
   print(mm1)

執行

E:\\documents\\F盤>python myperson.py
MyPerson:job=None,name=mp1,pay=0
MyPerson:job=c++開發,name=mp2,pay=20000
MyManager:job=開發經理,name=mm1,pay=50000
MyPerson:job=c++開發,name=mp2,pay=22000
MyManager:job=開發經理,name=mm1,pay=60000
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3677

    瀏覽量

    94799
  • python
    +關注

    關注

    56

    文章

    4823

    瀏覽量

    86041
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    使用Rust優化Python性能

    在數據分析領域Python無疑是最流行的編程語言,但是Python有一個硬傷就是作為一個編譯語言在性能上有些微的欠缺。而同樣最流行的語言Rust則在性能方面表現優秀。本文我們一起學習一個優化項目的實踐,對一個數據分析程序,改為R
    的頭像 發表于 11-01 15:59 ?1444次閱讀
    使用Rust<b class='flag-5'>優化</b><b class='flag-5'>Python</b>性能

    詳細Python寫網絡爬蟲

    詳細Python寫網絡爬蟲
    發表于 09-07 08:40 ?32次下載
    詳細<b class='flag-5'>用</b><b class='flag-5'>Python</b>寫網絡爬蟲

    Python性能優化

    Python性能優化的20條建議2016-07-05 17:38 1、優化算法時間復雜度 算法的時間復雜度對程序的執行效率影響最大,在Python中可以通過選擇合適的數據結構來
    發表于 10-10 10:31 ?0次下載

    Python應用與優化所必備的6個基本庫

    無論你是想快速入手Python還是想為Python應用程序構建本地UI,亦或者對Python代碼進行優化,本文列舉的6個庫,都有可能會幫到你。 由于具有易于使用的優勢,
    發表于 11-15 11:40 ?2814次閱讀

    解析c++語言的Qt內省機制

    所謂 內省 是指面向對象語言的一種在運行期間查詢對象信息的能力, 比如如果該語具有運行期間檢查對象型別的能力,那么我們稱它是型別 內省 (type intropection)的,型別 內省 可以用
    發表于 12-15 10:22 ?1538次閱讀

    Python 3.8.1有什么新功能和優化

    距離 Python 3.8.1 rc1發布沒多久的時間,目前,Python 3.8.1 也已正式發布。Python 3.8.1是Python 3.8的第一個維護版本,
    的頭像 發表于 12-23 10:56 ?3453次閱讀

    Python寫網絡爬蟲

    Python寫網絡爬蟲的方法說明。
    發表于 06-01 11:55 ?21次下載

    自學python單片機編程-Python語言控制單片機

    自學python單片機編程-Python語言控制單片機
    發表于 11-13 17:36 ?40次下載
    自學<b class='flag-5'>python</b>單片機編程-<b class='flag-5'>用</b><b class='flag-5'>Python</b>語言控制單片機

    Python學習科學編程

    Python學習科學編程,Python經典教材。
    發表于 03-09 15:00 ?0次下載

    介紹python列表的邊界和嵌套

    本文介紹python列表的邊界和嵌套。只能訪問python列表范圍內的項,python列表可以嵌套python列表。
    的頭像 發表于 02-27 14:49 ?1113次閱讀

    Python寫個小工具網頁

    簡簡單單的 Python 擼一個計算年齡的工具網頁,不用對前端特別熟悉,只要專注于工具的邏輯,其他都交給 Python 吧。
    的頭像 發表于 03-03 14:52 ?1589次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Python</b>寫個小工具網頁

    優化Python代碼有哪些工具

    Python是一種強大的編程語言,但在面對復雜項目和緊迫的時間要求時,提高Python的使用效率變得至關重要。為此,以下是詳細介紹十大工具,它們可以幫助您加速開發流程、提高編程體驗并優化
    的頭像 發表于 07-24 09:28 ?1657次閱讀

    python有什么 如何用python創建數據庫

    python有什么 如何用python創建數據庫 Python是一種高級編程語言,可以用于開發各種類型的應用程序和工具。它的廣泛應用使它在編程領域中極為受歡迎。
    的頭像 發表于 08-28 16:41 ?1421次閱讀

    python shell怎么

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

    python寫驗證環境cocotb

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