一.常見魔術方法
name類,函式,方法等的名字
module類定義所在的模組
class物件或類所屬的類
bases當前類的基類(父類)
doc類,函式的文件幫助,沒有定義為none
mromethod resolution order 方法解析順序
dict類或例項的屬性,可寫的字典
舉例:
class a(object):
pass
class c(object):
pass
class date(a, c):
country = 'china'
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
print(date.__name__)
# 類定義所在的模組, 如果在當前指令碼, 返回__main__, 否則, 返回真實的模組名eg: collections
print(date.__module__)
# 物件或類所屬的類: 是由哪個類例項化出來的;
d = date(2019, 10, 10)
print(d.__class__) # d物件是由date類例項化出來的;
print(date.__class__) # type(1)date類是由type類例項化出來的
# 當前類的基類(父類)
print(date.__bases__)
print(a.__bases__)
print(object.__bases__) # object沒有父類;
檢視結果:
二.建立,初始化,銷毀
建立__new__:new的功能是在生成物件之前所作的動作,接收的引數是cls類,負責物件的建立
初始化__init__:init是在物件生成完成之後完善物件的屬性,接收的是self物件,負責物件的初始化
銷毀(刪除):del:del刪除乙個物件,python中不管是手動呼叫還是自動**都會呼叫該方法
class student(object):
def __new__(cls, name):
print('正在new.....')
# 不知道new方法試藥幹嗎的, 直接返回父類的new方法
return super(student, cls).__new__(cls)
# 初始化(構造)方法: 建立物件時自動執行
def __init__(self, name):
print("正在初始化物件.....")
self.name = name
# 析構方法: 物件刪除時自動呼叫
def __del__(self):
print("正在刪除物件.....")
# 當程式執行結束之後, 會自動釋放變數資訊. 會自動呼叫析構方法;
s = student('westos')
print(s.name)
#此處手動呼叫
del s
#print(s.name)
檢視結果:可以看到new方法先執行,最後手動呼叫del方法,即刪除例項物件s
三.str__與__repr
str__與__repr是在類(物件)中對類(物件)本身進行字串處理。
通過例子了解其用法:
class student(object):
# 初始化(構造)方法: 建立物件時自動執行
def __init__(self, name):
print("正在初始化物件.....")
self.name = name
s = student("westos")
print(s)
class student(object):
# 初始化(構造)方法: 建立物件時自動執行
def __init__(self, name):
print("正在初始化物件.....")
self.name = name
# 如果沒有__str__, 自動返回__repr__的內容
# 物件的字串列印
def __str__(self):
return "" %(self.name)
# 在互動式python環境中產生作用
def __repr__(self):
return self.name
s = student("westos")
print(s)
使用str與repr時,可以友好顯示字串:
四.型別轉換的魔術方法
__int__
轉換成整型
__long__
轉換成長整型
__float__
轉換成浮點型
__complex__
轉換成複數
__oct__
轉換成八進位制
__hex__
轉換成十六進製制
__index__
如果定義了乙個可能被用老做切片的數值型
__trunc__
當math.truc(self)使用時被呼叫__trunc__f返回自身型別的整形擷取
__coerce__
執行混合型別的運算
物件導向的一些法則
物件導向的一些法則 法則1 優先使用 物件 組合,而非繼承 組合是一種通過建立乙個組合了其它物件的物件,從而獲得新功能的復用方 法有些時候也稱之為 聚合 aggregation 或 包容 containment 聚合 乙個物件擁有另乙個物件或對另乙個物件負責 即乙個物件包含另乙個物件或是另乙個物件的...
物件導向的一些知識
oop object oriented programming 物件導向程式設計 00d object oriented design 物件導向設計 面向過程 就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步的實現。例如 把大象裝進冰箱裡去。第一步 將冰箱開啟 第二步 將大象放進冰箱 第...
關於物件導向的一些思考
物件導向方法被人談論了二十多年了。我接觸它比較晚,直到九十年代中期才開始學習使用它。若說對這個方法做些評價,那還真是大言不慚了。不過這麼些年來,也週期性的對物件導向做些思考。或對或錯,我想都值得總結一下。一家之言,來看的同學不必太當真。首先我們要區分一下 基於物件 和 物件導向 的區別。基於物件,通...