python之反射與內建方法

2022-04-10 20:21:50 字數 2558 閱讀 9918

指的是在程式執行過程中可以"動態(不見棺材不掉淚)"獲取物件的資訊

反射機制指的是在程式的執行狀態中

對於任意乙個類,都可以知道這個類的所有屬性和方法;

對於任意乙個物件,都能夠呼叫他的任意方法和屬性。

這種動態獲取程式資訊以及動態呼叫物件的功能稱為反射機制。

class people:

def __init__(self,name,age):

self.name=name

self.age=age

​ def say(self):

​ print('<%s:%s>' %(self.name,self.age))

obj=people('辣白菜同學',18)

1、先通過多dir:檢視出某乙個物件下可以.出哪些屬性來

print(dir(obj))
2、可以通過字串反射到真正的屬性上,得到屬性值

print(obj.__dict__[dir(obj)[-2]])
四個內建函式的使用:通過字串來操作屬性值

# 1、hasattr()

print(hasattr(obj,'name'))

print(hasattr(obj,'x'))

# 2、getattr()

print(getattr(obj,'name'))

# 3、setattr()

setattr(obj,'name','egon') # obj.name='egon'

print(obj.name)

# 4、delattr()

delattr(obj,'name') # del obj.name

print(obj.__dict__)

res1=getattr(obj,'say') # obj.say

res2=getattr(people,'say') # people.say

print(res1)

print(res2)

obj=10

if hasattr(obj,'x'):

print(getattr(10,'x'))

else:

pass

print(getattr(obj,'x',none))

if hasattr(obj,'x'):

setattr(obj,'x',111111111) # 10.x=11111

else:

pass

class ftp:

def put(self):

print('正在執行上傳功能')

​ def get(self):

​ def interactive(self):

​ method=input(">>>: ").strip() # method='put'

​ if hasattr(self,method):

​ getattr(self,method)()

​ else:

​ print('輸入的指令不存在')

obj=ftp()

obj.interactive()

定義在類內部,以__開頭並以__結果的方法

特點:會在某種情況下自動觸發執行

為了定製化我們的類or物件

# str__:在列印物件時會自動觸發,然後將返回值(必須是字串型別)當做本次列印的結果輸出

class people:

def __init__(self, name, age):

self.name = name

self.age = age

def __str__(self):

# print('執行了...')

return "<%s:%s>" %(self.name,self.age)

obj = people('辣白菜同學', 18)

print(obj.__str__())

print(obj) # <'辣白菜同學':18>

obj1=int(10)

print(obj1)

# __del__:在清理物件時觸發,會先執行該方法

class people:

def __init__(self, name, age):

self.name = name

self.age = age

self.x = open('a.txt',mode='w')

# self.x = 佔據的是作業系統資源

def __del__(self):

# print('run...')

# 發起系統呼叫,告訴作業系統**相關的系統資源

self.x.close()

obj = people('辣白菜同學', 18)

# del obj # obj.__del__()

print('**********==>')

python 物件導向反射以及內建方法

一 反射 什麼是反射 可以用字串的方式去訪問物件的屬性,呼叫物件的方法 但是不能去訪問方法 python中一切皆物件,都可以使用放射。反射的四種方法 hasattr hasattr object.name 判斷乙個物件是否有name屬性或者是name方法。有就返回true,沒有就返回false ge...

繫結方法與非繫結方法,反射,內建方法

類中定義函式分為了兩大類 1.繫結方法 特殊之處 繫結給誰就應該由誰來呼叫,誰來呼叫就會將誰當作第乙個引數自動傳入 繫結給物件的方法 在類中定義函式沒有被任何裝飾器的情況下,預設就是繫結物件的 繫結給類的方法 為類中定義函式新增乙個裝飾器class method,就是繫結類的 2.非繫結方法 特殊之...

python 內建 Python內建方法大全

新增元素 集合.add 集合.update 一次新增多個值 集合隨機刪除 集合.pop 集合刪除指定元素 集合.remove 沒有找到會奔潰 集合.discard 沒有找到不會奔潰 移除空白 strip 取字串兩邊空格 lstrip 取字串左邊空格 rstrip 取字串右邊空格 括號中可以新增引數指...