我正在嘗試使用該globals()函式呼叫類方法。我知道你可以呼叫函式 usingglobals()因為它適用于普通函式。這是我擁有的代碼的簡單版本:
class test():
def func1():
print("test")
globals()["test.func1"]
這也不起作用:
globals()["test"].globals()["func1"]
我如何讓它呼叫函式而不對其進行硬編碼。
我需要這個globals()函式,因為我事先不知道要呼叫哪個函式。
uj5u.com熱心網友回復:
首先獲取類,然后獲取它的屬性。
globals()["test"].func1()
要么
globals()["test"].__dict__['func1']()
要么
eval("test.func1()")
這也是可能的:
class A:
class B:
class C:
def func1():
print("test")
def call_by_dot(string):
first, *rest = string.split(".")
obj = globals()[first]
for i in rest:
obj = getattr(obj, i)
return obj
call_by_dot("A.B.C.func1")()
uj5u.com熱心網友回復:
class test():
def func1():
print ("test")
eval("test.func1()")
uj5u.com熱心網友回復:
這會起作用:
class Test:
def func1():
print("test working")
Test.func1()
這將運行函式func1()并產生結果。
輸出:
test working
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/446018.html
標籤:Python python-3.x 班级
上一篇:通過類方法退出while回圈
