繁体   English   中英

将自我参数传递给成员函数

[英]Passing a self parameter to a member function

有人告诉我,永远不要将自点参数( 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中之前,我已经对其进行了一些处理),那么我就不想在传递给class方法之前再次进行处理。

通常,这是因为类方法已经可以访问用于调用该方法的对象。 您为该方法提供了两种不同的路径来访问相同的数据,并且别名在被调用方法的代码中并不明显。 相反,您应该执行以下操作:... self.do_something()

def do_something(self):
    self._result = self._parameter_one * self._parameter_two
    print(self._result)

你看得到差别吗? 这样,很明显您正在使用symbiont对象的属性(字段)来执行计算。 您发布的方式并未显示这一点。 在更复杂的设计中,很容易错过param1是直接从给定对象派生的,并且产生了一个致命错误,很难跟踪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM