python物件導向的一些常用魔術方法

2021-09-24 17:07:06 字數 3184 閱讀 9493

一.常見魔術方法

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 物件導向設計 面向過程 就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步的實現。例如 把大象裝進冰箱裡去。第一步 將冰箱開啟 第二步 將大象放進冰箱 第...

關於物件導向的一些思考

物件導向方法被人談論了二十多年了。我接觸它比較晚,直到九十年代中期才開始學習使用它。若說對這個方法做些評價,那還真是大言不慚了。不過這麼些年來,也週期性的對物件導向做些思考。或對或錯,我想都值得總結一下。一家之言,來看的同學不必太當真。首先我們要區分一下 基於物件 和 物件導向 的區別。基於物件,通...