使用 python 類實體加載本地 python 檔案以便將該 python 檔案中定義的所有變數添加到類的屬性中的聰明方法是什么?
uj5u.com熱心網友回復:
使用包含以下內容的檔案vars.py:
x = 2
y = 'fish'
for i in range(4):
x = x * 3
然后以兩種方式加載x并y進入一個類:
使用 __import__()
注意:這會將模塊中的所有全域變數填充到類中。很多垃圾。此外,匯入的名稱必須是一個包,而不僅僅是一個檔案。
class DangerZone:
def load_attrs(self, fn):
_vars = __import__(fn)
for attr_name, attr_val in _vars.items():
self.__dict__[attr_name] = attr_val
使用 exec()
好的,這很危險(exec()用于從外部運行任意代碼),但這里有。
class DangerZone:
def load_attrs(self, fn):
_globals = {}
_locals = {}
exec(open(fn).read(), _globals, _locals)
for attr_name, attr_val in _locals.items():
self.__dict__[attr_name] = attr_val
結果:
dz = DangerZone()
dz.load_attrs('vars.py')
print(dz.x, dz.y)
印刷:
162 fish
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/417002.html
標籤:
上一篇:libpng警告:iCCP:.NETCore中已知不正確的sRGB組態檔
下一篇:面向物件編程,不美了么?
