摘要:在自定義方法中有一些只讀屬性,一般我們用不到,但是了解下也不錯,通過這篇文章,我們還可以了解到綁定方法和非綁定方法的區別。指代綁定方法的類或者調用非綁定方法的類。
在python自定義方法中有一些只讀屬性,一般我們用不到,但是了解下也不錯,通過這篇文章,我們還可以了解到==綁定方法==和==非綁定方法==的區別。
im_self 指代類的實例對象。
im_func 指代函數對象。
im_class 指代綁定方法的類或者調用非綁定方法的類。
__doc__ 方法的文檔注釋
__name__ 方法名
__module__ 方法所在的模塊名。
__func__ 等價于im_func
__self__ 等價于im_self
示例如下:
class Stu(object): def __init__(self, name): self.name = name def get_name(self): "this is the doc" return self.name def show_attributes(method): print "im_self=", method.im_self print "__self__=", method.__self__ print "im_func=", method.im_func print "__func__=", method.__func__ print "im_class=", method.im_class print "__doc__=", method.__doc__ print "__module__=", method.__module__ print "...........bounded method........" stu=Stu("Jim") method = stu.get_name show_attributes(method) method() print "...........unbounded method......" method = Stu.get_name show_attributes(method) method()
輸出結果如下:
...........bounded method.......Traceback (most recent call last):. im_self= <__main__.Stu object at 0x0245D2B0> __self__= <__main__.Stu object at 0x0245D2B0> im_func=__func__= im_class= __doc__= this is the doc __module__= __main__ ...........unbounded method...... im_self= None __self__= None im_func= __func__= im_class= __doc__= this is the doc __module__= __main__ File "E:demopydemo.py", line 29, in method() TypeError: unbound method get_name() must be called with Stu instance as first argument (got nothing instead)
從上面的輸出結果可以看出,當通過類直接調用方法時,方法的im_self與__self__屬性為None,該方法為非綁定方法(unbound method),當我們通過實例調用該方法時,方法的im_self與__self__屬性為實例對象。這時該方法為綁定方法(bound method),但是不管哪種情況,方法的im_class都為調用類,而im_func為原始的函數對象。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38009.html
摘要:原鏈接中的元類是什么類也是對象在理解元類之前,需要掌握中類概念。事實上,是中用于創建所有類的元類。類本身是元類的對象在中,除了,一切皆對象,一切都是類或者元類的對象。事實上是自己的元類, 學習契機 項目中使用Elasticsearch(ES)存儲海量業務數據,基于ES向外提供的API進一層封裝,按需處理原始數據提供更精確、更多樣化的結果。在研究這一層的代碼時接觸到@six.add_me...
摘要:前言如題,今天解析下的配置文件。這時我們就可以用的屬性來配置隨機數,比如隨機字符串隨機隨機以內的隨機數的隨機數使用多配置文件很多時候我們開發項目都需要很多套環境,比如有測試環境,開發環境以及生產環境。原因是,是以的編碼方式讀取配置文件。 微信公眾號:一個優秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 如題,今天解析下 SpringBoot 的配置文件。 自定義屬性加...
摘要:上一篇文章裝飾器真正入門的鑒定標準下一篇文章垃圾回收詳解私有化變量定義規則變量形式解讀公有變量單前置下劃線,私有化屬性或方法,禁止導入,類對象和子類進可以訪問。雙前置下劃線,避免與子類中的屬性命名沖突,無法再在外部直接訪問。 上一篇文章:Python裝飾器:python真正入門的鑒定標準下一篇文章:Python垃圾回收詳解 1、私有化 變量定義規則 變量形式 解讀 xx 公...
閱讀 2680·2023-04-25 18:10
閱讀 1621·2019-08-30 15:53
閱讀 2818·2019-08-30 13:10
閱讀 3232·2019-08-29 18:40
閱讀 1137·2019-08-23 18:31
閱讀 1210·2019-08-23 16:49
閱讀 3410·2019-08-23 16:07
閱讀 885·2019-08-23 15:27