內建方法部分

2022-08-20 07:39:14 字數 3055 閱讀 8413

__getattr__是當屬性不存在的時候執行

__setattr__是設定的時候自動執行 低層實現方法self.__dict__[key]=value

__delattr__是刪除的時候自動設定 低層實現方法self.__dict__.pop(key)

補充:上面的是用點方式來使用

__getitem__

__setitem__

__delitem__都是用 來用

反射

hasattr(object,name)

getattr(object,name,default) 如果查詢不到則返回default 如果沒有default 那麼如果查詢不到則報錯

setattr(object,keys,values) 可以新增也可以修改 可以新增匿名函式

delattr(object,keys)

授權:

import

time

class

open:

def__init__(self,filename,mode="

w",encoding="

utf8"):

self.file=open(filename,mode,encoding=encoding)

self.mode=mode

self.encoding=encoding

defwrite(self,name):

self.file.write(

"%s %s

" %(time.strftime("

%y-%m-%d %x

"),name))

def__getattr__

(self, item):

return

getattr(self.file,item)

f=open("

123.txt

","w")

f.write(

"123

")

__getattribute__的使用

class

test:

def__init__

(self,s):

self.s=s

def__getattr__

(self, item):

print("

輸出的是getattr")

def__getattribute__

(self, item):

print("

輸出的是getattribute")

raise attributeerror("

123"

)f=test(10)

print

(f.s)

#輸出的是getattribute

#輸出的是getattr

#none

無論何時都會觸發__getattribute__

__str__ 與__repr__的使用

class

foo1:

def__init__

(self,name):

self.name=name

def__repr__(self): #

與__str__一樣

return

"%s %s

" %(time.strftime("

%y/%m/%d %x

"),self.name)

#需要例項才可以,類不可以

s1=foo1("

123"

)print(s1) #

顯示的方法都是str(s1)------>s1.__str__

#2020/07/06 16:40:48 123

repr只是在cmd中使用能自動返回

而str需要print才行

析構函式 __del__

class

f:

def__init__

(self,name):

self.name=name

def__del__

(self):

print("

我執行了")

f=f("

ljh"

)del

f.name

print("

_______________>")

#執行結果

#_______________>

#我執行了

class

f:

def__init__

(self,name):

self.name=name

def__del__

(self):

print("

我執行了")

f=f("

ljh"

)del

fprint("

_______________>")

#執行結果

#我執行了

#_______________>

總結:__del__()是在類結束時自動執行,而例項結束無法自動執行

迭代器協議:

class

foo:

def__init__

(self,name):

self.name=name

def__iter__

(self):

return

self

def__next__

(self):

if self.name==15:

raise attributeerror("錯誤"

) self.name+=1

return

self.name

s1=foo(10)

print(s1.__next__

())print(s1.__next__

())print(s1.__next__

())print(s1.__next__

())print(s1.__next__

())print(s1.__next__())

Python 物件導向反射及內建方法(部分)講解

反射 自省hasattr obj,屬性 obj.屬性 是否存在 getattr obj,屬性 獲取 obj.屬性 不存在則報錯 getattr obj,屬性 預設值 獲取 obj.屬性 不存在 返回 預設值 setattr obj,屬性 obj.屬性 屬性值 delattr obj,屬性 del o...

類和方法部分習題

練習17 1 在乙個時間類中實現 add time 方法,能夠列印出增加指定秒數後的時間。1 2 class time object 3 def print time self 4 print 2d 2d 2d self.hour,self.minute,self.second 5 def time...

演算法部分整理

1.pca主成分分析 主成分分析 principal component analysis,pca 是一種統計方法。通過正交變換將一組可能存在相關性的變數轉換為一組線性不相關的變數,轉換後的這組變數叫主成分。無監督的學習,往特徵量最大的特徵向量的分銷商投影 pca的主要問題 沒有考慮類別號 進行主成...