dir
python
內置方法有很多,無論是初學者還是精通python
的程序員都不能全部記住所有的方法,這時候 dir()
方法就非常有用了,使用 dir()
函數可以查看對象內的所有的屬性和方法,在 python
中任何東西都是對象,一種數據類型,一個模塊等,都有子集的屬性和方法,除了常用的方法外,其他的你不需要全部記住它,交給dir()
函數就好了。
比如查看列表、字符串、字典的方法:
print(dir([]))
print(dir(""))
print(dir({}))
也可以查看模塊裏面的方法:
import random
print(dir(random))
內置方法
__方法名__
格式是python
針對對象提供的內置方法/屬性。
__doc__
:獲取一個函數的文檔說明,比如:
import random
print(random.randint.__doc__)
>>>Return random integer in range [a, b], including both end points.
__new__
:使用類名()
創建對象時,會被自動調用。是由object
基類提供的內置靜態方法。
使用類名()
創建對象時,python
的解釋器首先會調用__new__
方法爲對象分配空間。然後__init__
初始化對象。
__init__
:對象被初始化時,會被自動調用。__del__
:對象從內存中銷燬前,會被自動調用。如果希望在對象被銷燬前,再做一些事情,可以考慮一下__del__
方法。
class Ex:
def __del__(self):
print("Exit")
a = Ex()
# del a
print("-"*50)
>>> --------------------------------------------------
Exit
這裏因爲a
是全局變量,只有當程序退出時纔會被銷燬,此時纔會調用__del__()
。如果在分割線上方使用del
刪除對象的話,就會在分割線上方輸出字符Exit
。
__str__
:返回對象的描述信息,print
函數輸出使用。
class Ex:
def __del__(self):
print("Exit")
def __str__(self):
return "Class Name"
a = Ex()
print(a)
>>> Class Name
Exit
可以看到上述結果的print(a)
輸出調用了__str__
。
私有屬性和私有方法
self
定義屬性,def
定義方法。
在實際開發中,對象的某些屬性或方法可能只希望在對象的內部被使用,而不希望在外部被訪問到。私有屬性就是對象不希望公開的屬性。私有方法就是對象不希望公開的方法。
在定義屬性或方法時,在屬性名或者方法名前增加兩個下劃線,定義的就是私有屬性或方法。
如果父類中有公有方法調用了父類中的私有屬性和私有方法的話,子類可以通過訪問父類中的共有方法間接訪問到私有屬性和私有方法。
僞私有屬性和私有方法
Python
沒有真正意義的私有,在給屬性、方法命名時,實際是對名稱做了一些特殊處理,使得外加無法訪問,處理方法是在名稱前面加上_類名
=>_類名__名稱
。不過這種方式在新版Python
中已經不行了。