我一直在研究干净的编码指南。然而,对于我用 Python 编写的几乎每个类,我都会提出一个问题,即如何以干净的 Pythonic 方式设置类属性。
您是愿意使用 getter 函数在构造函数中设置它们,还是调用 setter 函数?
考虑以下完全虚构的示例:
class ClassWithGet:
def __init__(self, temperature_in_fahrenheit):
self.temp_in_fahrenheit = temperature_in_fahrenheit
self.temp_in_celsius = self.fahrenheit_to_celsius(temperature_in_fahrenheit)
@staticmethod
def fahrenheit_to_celsius(fahrenheit):
celsius = (fahrenheit - 32) * 5/9
return celsius
或者,作为替代:
class ClassWithSet:
def __init__(self, temperature_in_fahrenheit):
self.temp_in_fahrenheit = temperature_in_fahrenheit
self.set_celsius()
def set_fahrenheit(self):
self.temp_in_celsius = (self.temp_in_fahrenheit - 32) * 5/9
我不想详述具体的例子。假设华氏度到摄氏度的转换是针对此类的,并且没有在代码的其他任何地方使用。还要考虑温度变量是“最终的”。所以,这实际上只是关于如何初始设置属性。
我真的很想知道您对 Clean Code 的看法。