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

Kac*_*per 2 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
Run Code Online (Sandbox Code Playgroud)

如何使这项工作有效?也许最好将其移至static_member另一个模块?static_member或者可以在函数中写入吗__init__

Ser*_*sta 8

如果您希望从类的第一个对象初始化静态成员,您可以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
Run Code Online (Sandbox Code Playgroud)