如何从python静态方法访问成员变量?

时间:2019-02-15 08:12:01

标签: python python-3.x

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)
  

文件settings.py”,

     

第27行,在localize_path中

     

如果WORKSPACE [“ path”]:

     

NameError:名称“ WORKSPACE”未定义

1 个答案:

答案 0 :(得分:1)

您的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)

更新

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