在 python 中的 class 中初始化实例变量的最佳做法是什么?

What is the best practice for initializing an instance variable in a class in python?

下面两个变体初始化一个class实例变量。在 python 中的 class 中初始化实例变量的最佳实践是什么?为什么(可能是 none 建议的变体)?

假设:变体 a 因为它可能更明确?

class Example():
    def __init__(self, parameter):
        # EITHER
        # variant a to initialize var_1
        self.var_1 = self.initialize_var_1_variant_a(parameter)
        # OR
        # variant b to initialize var_1
        self.initialize_var_1_variant_b(parameter)
        # OR something else
        # ...

    def initialize_var_1_variant_a(self, parameter):
        # complex calculations, var_1 = f(parameter)
        result_of_complex_calculations = 123
        return result_of_complex_calculations

    def initialize_var_1_variant_b(self, parameter):
        # complex calculations, var_1 = f(parameter)
        result_of_complex_calculations = 123
        self.var_1 = result_of_complex_calculations


example_instance = Example("some_parameter")
print(example_instance.var_1)

变体 A 是执行此操作的常用方法。很高兴能够通过查看 __init__ 来查看所有 class 成员,而不必深入研究其他函数 (initialize_var_1_variant_b) 来准确找出属性是什么设置。

一般而言,class 将拥有的所有成员属性都应在 __init__ 中初始化。

换个角度来说,initialize_var_1_variant_a应该尽量少做。计算 var_1 的值并将其保存为 class 属性是两个可以轻松拆分的任务。

它还开启了将 initialize_var_1_variant_a 移到 class 本身之外的可能性,因此它可以被程序的其他部分重新使用。