假設我們有一些在全局名稱空間中定義和可用的類。在例如:如何調用具有文本變量名稱的類構造函數? [Python]
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
class Vector:
def __init__(self, alpha, r):
self.x = r * cos(alpha)
self.y = r * sin(alpha)
# and many others...
如何做到這一點:
class_name = 'Point'
x = 14.361
y = -8.100
code_str = 'class_object = ' + class_name + '(' + str(x) + ', ' + str(y) + ')'
exec code_str # That evaluates to: "class_object = Point(14.361, -8.100)"
print class_object.x, class_object.y
,而無需使用危險的高管?
PS。如果有人要求,我打算從一些txt或json文件加載數據。
加載什麼數據,要執行的字符串?看起來不好主意。 –
你根本不需要'exec'。只需從你的文本文件中加載數據,並將其傳遞給'Point'類構造函數。簡單。 –
我知道,從文件執行代碼是非常糟糕的想法:)但我有很多類 - 點,線,Versor,我不知道哪一個我會打電話 –