Python學習week7 對映

2022-04-13 07:56:27 字數 1944 閱讀 4290

對映:通過使用者輸入的字串呼叫物件的屬性和方法。

呼叫時使用物件真實的方法名和屬性名,***attr()的引數使用的是使用者輸入的字串,由此完成使用者輸入的字串和物件實際屬性和方法的連線。

hasattr(obj,name_str)  判斷物件obj裡面是否有對應的name_str字串的方法;

getattr(obj,name_str)  根據字串去獲取obj物件裡的對應的方法的記憶體位址;

class person(object):

def __init__(self,name):

self.name=name

def eat(self,food):

print('%s is eating '%self.name,food) #注意此處的用法

p1=person('剛田武')

choice=input('please input:').strip()

if hasattr(p1,choice):

func=getattr(p1,choice)

func('包子')

執行後輸入eat,輸出為:

剛田武 is eating  包子

如果輸入的是name,程式報錯,func被賦值p1.name,是屬性值,不能被呼叫

setattr(obj,'name_str',z)  相當於obj.name_str=z

用來設定屬性值時:

class person(object):

def __init__(self,name):

self.name=name

def eat(self,food):

print('%s is eating '%self.name,food) #注意此處的用法

def laugh(self):

print('%s is laughing'%self.name)

p1=person('剛田武')

choice=input('please input:').strip()

if hasattr(p1,choice):

setattr(p1,choice,'胖虎')

print(p1.name)

執行後,輸入name,輸出為:

胖虎

用來設定成方法時:

class person(object):

def __init__(self,name):

self.name=name

def eat(self,food):

print('%s is eating '%self.name,food) #注意此處的用法

def laugh(self):

print('%s is laughing'%self.name)

p1=person('剛田武')

choice=input('please input:').strip()

if hasattr(p1,choice):

setattr(p1,choice,'胖虎')

else:

setattr(p1,choice,laugh)

p1.talk(p1)

執行,只有當輸入talk時,程式正常執行,輸出為:

剛田武 is laughing

把:

else:

setattr(p1,choice,laugh)

p1.talk(p1)

修改成:

else:

setattr(p1,choice,laugh)

func =getattr(p1,choice)

func(p1)

輸入任意,都可以執行laugh()方法

delattr(obj,name_str)  刪除obj.name_str屬性

Python學習week7 檔案操作

檔案操作命令 建立並開啟乙個檔案test,然後關閉 開啟乙個檔案,返回乙個檔案物件 流物件 和檔案描述符。開啟檔案失敗,則返回異常 touch test linux new item new test.txt type file powershell f open test file物件 f.clo...

week7 初識卷積網路

資料集 mnist 模型簡介 調整maxpool的時候,報錯了,不知道是不是因為源資料的維度必須是maxpool的維度的整數倍,在有stride的情況下,可能需要是maxpool stride的維度的整數倍,還沒有試過,下次可以試一下。可以將初始化的方法儲存在陣列中呼叫。調參的時候,可以將卷積的層數...

week7 月模擬題

問題描述 用 ascii 字元來畫圖是一件有趣的事情,並形成了一門被稱為 ascii art 的藝術。例如,下圖是用 ascii 字元畫出來的 cspro 字樣。本題要求程式設計實現乙個用 ascii 字元來畫圖的程式,支援以下兩種操作 畫線 給出兩個端點的座標,畫一條連線這兩個端點的線段。簡便起見...