python - 如何根据构造函数参数初始化静态成员?

标签 python static

我需要有静态或外部列表,A 类的每个对象都将使用它。列表的值只需要初始化一次并且应该从构造函数参数中获取,例如:

def initialize(x, y):
    for i in range(0, x):
        static_to_return.append([])
        for j in range(0, y):
            static_to_return[i].append((i * x) + 1 + y)
    return static_to_return


class A:
    static_member = initialize(x, y)

    def __init__(self, x, y):
        self.x = x
        self.y = y

如何使这项工作?也许将 static_member 移动到另一个模块会更好?或者是否可以在 __init__ 函数中写入 static_member

最佳答案

如果你想从类的first对象初始化静态成员,你可以在类定义中将它初始化为None,并在实例中测试它的值构造函数:

class A:
    static_member = None

    def __init__(self, x, y):
        self.x = x
        self.y = y
        if A.static_member is None:  # still not initialized?
            A.static_member = initialize(x, y)  # ok, here it is

关于python - 如何根据构造函数参数初始化静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37822573/

相关文章:

类的 Java 菜单栏操作

python - 通过遍历 Pandas 数据框中的行来创建新列

c# - 将对象连同静态成员变量序列化为 XML

c++ - 由 lambda 初始化的函数局部静态函数对象,线程安全与否?

python - 为 Celery 中的任务类指定队列

Java静态方法

java - 在类中使用共享服务

python - 不同Python环境中的tqdm变化

python - 如何在 python 中使用 BeautifulSoup 移动到标签的末尾?

python - 安装第三方库,以便在 Google App Engine 开发服务器内部和外部都可用