飄逸的python – 靈活的動態之xxxattr

來源:互聯網
上載者:User
標題的xxxattr指的是hasattr/getattr/setattr/delattr。可以動態檢測、擷取、設定、刪除對象的屬性和方法。這裡所說的動態,說白了就是“ 可以通過字串來做這些事”。這是一個非常強大靈活的特性。我舉個例子。有個GM工具來設定玩家角色的屬性,比如角色的屬性有經驗、體力、遊戲幣。
roletable = {'31415926':{'exp':99,'energy':100,'gamecoin':1000}}#偽角色資料庫表class Role:    def __init__(self,id):        roleinfo      = roletable[id]        self.exp      = roleinfo['exp']        self.energy   = roleinfo['energy']        self.gamecoin = roleinfo['gamecoin']role = Role('31415926')
從這個GM工具傳入程式的參數是角色id(_id),屬性名稱(_attr),屬性值(_val)。換句話說,就是傳入的是 字串。如果按照常規做法。只能是枚舉。即
if _attr == 'exp':    role.exp = _valelif _attr == 'energy':    role.energy == _valelif _attr == 'gamecoin':   role.gamecoin == _val
而在python的動態下,只需要
setattr(role,_attr,_val)
比如
setattr(role,'gamecoin',888)print role.gamecoin
輸出888

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.