欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Python由__dict__和dir()引發(fā)的一些思考

 更新時間:2017年10月30日 09:59:14   作者:雷子-LL  
這篇文章主要介紹了淺談Python由__dict__和dir()引發(fā)的一些思考,具有一定參考價值,需要的朋友可以了解下。

關(guān)于__dict__和dir()的區(qū)別和作用請參考這篇文章:

基于Python __dict__與dir()的區(qū)別詳解

說下我當時遇到的問題:

class Demo:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def func(self):
    print('Hello {0}'.format(self.name))
>>> d1 = Demo('Pythoner', 24)
>>> hasattr(d1, 'func')
True
>>> d1.__dict__
{'age': 24, 'name': 'Pythoner'}
>>dir(d1)
[ 'age', 'func', 'name','__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

首先,我們知道實例方法也可以算作是屬性,通過hasattr()函數(shù)可以驗證.而 __dict__是用來存儲對象屬性的一個字典,但是它的返回值中并沒有'func'!

再看dir()函數(shù),它會自動尋找一個對象的所有屬性(包括從父類中繼承的屬性),它的返回值中有'func'.

所以我推測,"實例方法"并不屬于實例的"私有"屬性,而是該類的所有實例所共享的屬性!

實例得到私有屬性需要一個"私有化"的過程,就像__init__初始化函數(shù)!

驗證:

class Demo2:
  def __init__(self, name):
    self.name = name
  def func(self):
    print('----get arg country----')
    self.country = 'China'
>>> d2 = Demo2('Pythoner')
>>> d2.__dict__
{'name': 'Pythoner'}
>>> d2.func()
----get arg country----
>>> d2.__dict__
{'country': 'China', 'name': 'Pythoner'}

"實例方法"之所以被稱為實例方法,或者說每個實例執(zhí)行實例方法會因為各自私有屬性的不同而產(chǎn)生不同的結(jié)果,是因為方法中的self參數(shù).

實例在執(zhí)行實例方法時會在其所屬的類中尋找該方法,然后通過self參數(shù)將實例本身傳遞進去,實例的私有屬性就一并進行了傳遞.通過self參數(shù)就實現(xiàn)了實例和方法的綁定.

總結(jié)

以上就是本文關(guān)于淺談Python由__dict__和dir()引發(fā)的一些思考的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:淺談使用Python變量時要避免的3個錯誤、深入理解Python中的*重復(fù)運算符等,如有不足之處,歡迎留言指出。

相關(guān)文章

  • Python中方法定義與方法調(diào)用舉例詳解

    Python中方法定義與方法調(diào)用舉例詳解

    在Python中,方法調(diào)用是編寫程序時經(jīng)常會涉及到的一個重要概念,下面這篇文章主要給大家介紹了關(guān)于Python中方法定義與方法調(diào)用的相關(guān)資料,文章通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • python與pycharm有何區(qū)別

    python與pycharm有何區(qū)別

    在本篇文章里小編給大家整理了關(guān)于pycharm與python的區(qū)別相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • 檢測pytorch是否使用GPU的方法小結(jié)

    檢測pytorch是否使用GPU的方法小結(jié)

    pytorch在服務(wù)器上跑的很慢,nvidia-smi顯示GPU利用率一直是0%,所以本文總結(jié)了一些可以檢測深度學(xué)習(xí)算法是否在使用GPU的方法,需要的朋友可以參考下
    2023-12-12
  • python版本的讀寫鎖操作方法

    python版本的讀寫鎖操作方法

    這篇文章主要介紹了python版本的讀寫鎖操作方法,結(jié)合實例形式分析了Python讀寫鎖機制的原理與實現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • python計算圓周長、面積、球體體積并畫出圓

    python計算圓周長、面積、球體體積并畫出圓

    這篇文章主要介紹了python計算圓周長、面積、球體體積并畫出圓(python3+PyObject+Gtk實現(xiàn)界面聯(lián)動),需要的朋友可以參考下
    2014-04-04
  • python+pyqt5編寫md5生成器

    python+pyqt5編寫md5生成器

    這篇文章主要為大家詳細介紹了python+pyqt5編寫md5生成器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python筆記之代理模式

    Python筆記之代理模式

    這篇文章主要為大家詳細介紹了Python筆記之代理模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Pandas?DataFrame添加一行數(shù)據(jù)的幾種方法

    Pandas?DataFrame添加一行數(shù)據(jù)的幾種方法

    在處理數(shù)據(jù)分析和數(shù)據(jù)科學(xué)項目時,經(jīng)常會使用到Python中的pandas庫來進行數(shù)據(jù)操作和分析,其中DataFrame是pandas庫中最重要的數(shù)據(jù)結(jié)構(gòu)之一,這篇文章主要給大家介紹了關(guān)于Pandas?DataFrame添加一行數(shù)據(jù)的幾種方法,需要的朋友可以參考下
    2024-08-08
  • Python基于yield遍歷多個可迭代對象

    Python基于yield遍歷多個可迭代對象

    這篇文章主要介紹了Python基于yield遍歷多個可迭代對象,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 如何修復(fù)使用 Python ORM 工具 SQLAlchemy 時的常見陷阱

    如何修復(fù)使用 Python ORM 工具 SQLAlchemy 時的常見陷阱

    SQLAlchemy 是一個 Python ORM 工具包,它提供使用 Python 訪問 SQL 數(shù)據(jù)庫的功能。這篇文章主要介紹了如何修復(fù)使用 Python ORM 工具 SQLAlchemy 時的常見陷阱,需要的朋友可以參考下
    2019-11-11

最新評論