對映:通過使用者輸入的字串呼叫物件的屬性和方法。
呼叫時使用物件真實的方法名和屬性名,***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 字元來畫圖的程式,支援以下兩種操作 畫線 給出兩個端點的座標,畫一條連線這兩個端點的線段。簡便起見...