在 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 本身之外的可能性,因此它可以被程序的其他部分重新使用。
下面两个变体初始化一个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 本身之外的可能性,因此它可以被程序的其他部分重新使用。