簡體   English   中英

如何使用 globals() function 調用 class 方法?

[英]How do i call a class method using the globals() function?

我正在嘗試使用globals() function 調用 class 方法。我知道您可以使用globals()調用函數,因為它適用於普通函數。 這是我擁有的代碼的簡單版本:

class test():
    def func1():
        print("test")

globals()["test.func1"]

這也不起作用:

globals()["test"].globals()["func1"]

我如何在不對其進行硬編碼的情況下調用 function。

我需要globals() function,因為我事先不知道我要調用哪個 function。

先獲取class,再獲取其屬性。

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")()

這會起作用:

class Test:
    def func1():
        print("test working")



Test.func1()

這將運行 function func1()並產生結果。

output:

test working
class test():
    def func1():
        print ("test")

eval("test.func1()")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM