首页 > 解决方案 > 方法参数还是实例属性?

问题描述

有时,当我为需要作用于某个变量的类设计新方法时,我不能说是否最好将此变量作为方法参数传递,或者是否最好将此变量保存为实例属性并仅使用它在方法里面。两种方法的优点/缺点是什么?

class A:
    def __init__(self, data):
        self.data = data
    def my_method(self):
        # does something with self.data

或者

class B:
    def my_method(self, data):
        # does something with data

标签: pythonoop

解决方案


这取决于班级可能做的所有其他事情。

最普遍的是,您的类封装的抽象是什么?

它需要data进行大量操作,还是仅此一项?会data改变吗?如果data是这个类的“点”,那么它可能应该在 中__init__,但如果它用于data作用对象,那么可能不是。

我们需要了解更多......


推荐阅读