首页 > 解决方案 > 如何从 python 静态方法访问成员变量?

问题描述

class Settings:
    WORKSPACE = env.get("BK_WKPS")

    def localize_path(*args):
        if WORKSPACE["path"]:
            path = join_path(WORKSPACE["path"], *args)
            return path
        else:
            return None

    log_location = localize_path("logs")

print(Settings.log_location)

文件设置.py",

第 27 行,在 localize_path 中

如果工作空间 [“路径”]:

NameError:名称“工作空间”未定义

标签: pythonpython-3.x

解决方案


您的log_location成员在定义类之前被初始化,所以我认为您应该WORKSPACE作为参数传入:

class Settings:
    WORKSPACE = env.get("BK_WKPS")

    def localize_path(WS, *args):
        if WS["path"]:
            path = join_path(WS["path"], *args)
            return path
        else:
            return None

    log_location = localize_path(WORKSPACE, "logs")

print(Settings.log_location)

更新:

我确信这是一种不好的形式,使用这样的方法,因为你留下了一个带有另一个程序员认为他们可以调用的方法的类。


推荐阅读