程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python魔法方法(9):__dir__(self) 方法

編輯:Python

Python 的對象天生擁有一些神奇的方法,它們總被雙下劃線所包圍,它們是面向對象的 Python 的一切。它們是可以給你的類增加魔力的特殊方法,如果你的對象實現(重載)了某一個魔法方法,那麼這個方法就會在特殊的情況下自動被 Python 所調用。

功能

定義對象被 dir() 函數調用時的行為。

參數

self 表示對象本身。

返回值

一個可迭代對象。

示例:

class MyTest(object):
def __init__(self):
self.name = '阿珍'
self.age = 18
def __dir__(self) -> 'Iterable[str]':
dic = self.__dict__.copy()
if 'name' in dic:
dic.pop('name')
return dic
sample = MyTest()
print(dir(sample))
class CLanguage:
def __init__(self, ):
self.name = "C語言中文網"
self.add = "http://c.biancheng.net"
def say(self):
pass
clangs = CLanguage()
print(dir(clangs))

通過 dir() 函數,不僅僅輸出本類中新添加的屬性名和方法(最後 3 個),還會輸出從父類(這裡為 object 類)繼承得到的屬性名和方法名。

dir() 函數的內部實現,其實是在調用參數對象 __dir__() 方法的基礎上,對該方法返回的屬性名和方法名做了排序。
所以,除了使用 dir() 函數,可以自行調用該對象具有的 __dir__() 方法:

class CLanguage:
def __init__(self, ):
self.name = "C語言中文網"
self.add = "http://c.biancheng.net"
def say(self):
pass
clangs = CLanguage()
print(clangs.__dir__())

使用 __dir__() 方法和 dir() 函數輸出的數據是相同,僅僅順序不同。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved