在python3中初始化class属性的最佳方法是什么?

问题描述 投票:0回答:1

有两种方法:

1:

def get(params):
    res = "do_something"
    return res

class A():
    a = get(params)

a=A()

2:

class A():
    a = ""

    @classmethod
    def Init(cls,params):
        res = "do_something"
        cls.a = res

a=A()
a.Init()

我不知道如何选择。还有更好的东西吗?

python python-3.x python-2.7
1个回答
1
投票

类属性应该是在所有实例之间共享的静态属性,并且不会更改值(例如,所有num_sides实例的Square)。因此,在课堂上初始化它们是一个很好的策略。

另一方面,classmethod主要用于替代构造函数。虽然您可以访问该类,但您的主要目标是初始化实例。在这样的函数中分配类属性会让读者感到困惑。此外,它每次调用此构造函数时都会初始化值。

总的来说,第一种方法更好。

© www.soinside.com 2019 - 2024. All rights reserved.