【发布时间】:2020-11-17 14:21:07
【问题描述】:
下面两个变体来初始化一个类实例变量。在 python 中初始化类中的实例变量的最佳实践是什么以及为什么(可能没有建议的变体)?
假设:变体 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 因为它更明确?
-
我通常更喜欢variant1。除了我不会叫它
initialize_var_1而是create_xxx基于它创造的任何东西。在所有条件相同的情况下,应在__init__方法中设置实例变量。但正如@khelwood 指出的那样,如果它更清晰,请使用变体 2。
标签: python class variables initialization