python類與反射

2021-09-23 20:37:41 字數 2493 閱讀 6146

目錄:物件導向程式設計與面向過程程式設計

定義類例項化物件

屬性查詢

繫結給物件的方法

反射面向過程:

​ 核心是過程二字,過程指的是解決問題的步驟,即先幹什麼再幹什麼…基於該思想編寫程式就好比在設計一條流水線

物件導向:

​ 核心是物件二字,物件指的是特徵與技能的結合體,基於該思想編寫程式就好比在創造乙個世界,程式設計師就是這個世界的上帝,在上帝眼裡一切事物均是物件

回到目錄

類就是一系列屬性和方法的結合體

class oldboystudent:

school='oldboy'

def __init__(self,name,age,***):

self.name=name

self.age=age

self.***=***

def choose_course(self,course):

pass

# 類你也可以把它理解成是乙個容器,你往裡面存了很多名字,

# 存不是我們首要的目的,取才是!

# 如果你要訪問類裡面的名字

# print(oldboy.__dict__)

# print(oldboy.__dict__['school'])

# print(oldboy.school) python給你提供了訪問屬性的簡便操作 統一採用句點符

# 只要是句點符操作的左邊一定是乙個容器(命名空間) 比如: 模組,類,物件

回到目錄

呼叫init完成例項化 self.name = name,這種語法不是在獲取屬性而是在往物件裡面新增屬性

obj = oldboy('jason')

print(obj.__dict__) # 檢視物件獨有的屬性

print(obj.school) # 還可以檢視類裡面共有的屬性

步驟:

先從物件自己的命名空間找,如果沒有則去類命名空間中找,如果還沒有則去父類中找…

如果是多繼承的情況下,請參考:

回到目錄

在類中定義的函式,叫方法,類可以呼叫但是需要手動傳入self

該方法在沒有被任何裝飾器修飾的前提下,其實就是給物件用的而且是繫結給物件的繫結方法

繫結特點:誰來調就會將誰當作第乙個引數自動傳入

通過字串來獲取類或物件的屬性或方法

#1、反射:指的是通過字串來操作類或者物件的屬性

class people:

country='china'

def __init__(self,name):

self.name=name

obj=people('egon')

#涉及四個內建函式

# hasattr

print('country' in people.__dict__)

print(hasattr(people,'country'))

# getattr

print(people.__dict__['country'])

print(getattr(people,'country'))

print(getattr(people,'country1111',none))

# setattr

people.__dict__['x']=111

print(people.x)

setattr(people,'x',111)

print(people.__dict__)

# delattr

delattr(people,'country')

print(people.__dict__)

示例

class ftp:

def get(self):

print('get...')

def put(self):

print('put...')

def auth(self):

print('auth...')

def run(self):

while true:

cmd=input('>>: ').strip() #cmd='get'

if hasattr(self,cmd):

method=getattr(self,cmd)

method()

else:

print('輸入的方法不存在')

obj=ftp()

obj.run()

內建方法

# __str__

# __getattr__ 注意是物件獲取自己沒有的屬性時才會觸發(屬性和方法)

# __setattr__

回到目錄

反射與類操作(3)

反射的目的不僅僅只是替代關鍵字new,而在於反射可以直接操作類的各種結構。class類中定義有如下方法 取得完整類名稱 public string forname 取得類名稱 public string get name 取得父類class物件 public class getsuperclass ...

python反射例項化 Python的類反射機制

反射就是通過字串的形式,匯入模組 通過字串的形式,去模組尋找指定函式並執行。python有四個內建函式 函式功能 getattr object,attr default 獲取指定字串名稱的物件屬性或方法,如果物件有該屬性則返回屬性值,如果有該方法則返回該方法的記憶體位址,如果都沒有就報錯,如果指定了...

python 反射 python中的反射

什麼是反射?有時我們要訪問某個變數或是方法時並不知道到底有沒有這個變數或方法,所以就要做些判斷。判斷是否存在字串對應的變數及方法。我們知道訪問變數時是不能加引號的,否則會被當成字串處理。如果要通過字串找到對應的變數,那該怎麼辦呢 反射就是用於解決上面兩個問題而產生的,所謂反射,按我的理解就是反過來告...