簡體   English   中英

從同一模塊中的類名字符串中獲取 Python 類對象

[英]Get Python class object from class name string in the same module

我有一堂課

class Foo():
    def some_method():
        pass

同一模塊中的另一個類:

class Bar():
    def some_other_method():
        class_name = "Foo"
        # Can I access the class Foo above using the string "Foo"?

我希望能夠使用字符串“Foo”訪問Foo類。

如果我在另一個模塊中,我可以使用以下方法執行此操作:

from project import foo_module
foo_class = getattr(foo_module, "Foo")

我可以在同一個模塊中做同樣的事情嗎?

IRC 中的人建議我使用映射字典將字符串類名映射到類,但如果有更簡單的方法,我不想這樣做。

import sys
getattr(sys.modules[__name__], "Foo")

# or 

globals()['Foo']

您可以在sys模塊的幫助下完成:

import sys

def str2Class(str):
    return getattr(sys.modules[__name__], str)
globals()[class_name]

請注意,如果這不是絕對必要的,您可能需要重構代碼以不使用它。

暫無
暫無

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

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