有人告诉我,我从不将自己的点参数(self.paramter
)传递给成员方法。这就是我的意思:
class my_class:
def __init__(self, parameter_one, parameter_two):
self._parameter_one = parameter_one
self._parameter_two = parameter_two
self._result = None
self.do_something(param1 = self._parameter_one, param2 = self._parameter_two)
def do_something(self, param1, param2):
self._result = param1 * param2
print(self._result)
我拨打电话,确实有效:
>>> a = my_class(2, 5)
10
为什么这样做不好?它并不反对我所知道的任何PEP8。如果我按构造函数中传递的那些设置self.parameters(也许我在存入self之前已经对它们进行了一些处理)我不希望在传递给类方法之前再次处理。
答案 0 :(得分:2)
通常,这是因为类方法已经可以访问您用来调用方法的对象。您为该方法提供了两种不同的路径来访问相同的数据,并且该别名在被调用方法的代码中并不明显。相反,你应该做这样的事情: ... self.do_something()
def do_something(self):
self._result = self._parameter_one * self._parameter_two
print(self._result)
你看到了区别吗?这样,您就可以清楚地知道您正在使用共生对象的属性(字段)来执行计算。你发布的方式并没有表明这一点。在更复杂的设计中,很容易错过param1
直接来自给定的对象 - 并且会产生难以追踪的致命错误。< / p>