只是好奇,以下模式的优点和缺点是什么?
模式1
class Myclass:
def __init__(self):
self.val = "foo"
self.process()
def process(self):
#do_sth on self.val
模式2
class Myclass:
def __init__(self):
self.val = "foo"
self.process(self.val)
def process(self, val):
#do_sth on val
哪一个更好,为什么?
感谢!!!
答案 0 :(得分:1)
通常,模式1:将实例属性收集在一起作为一个对象的属性的目的是通过传递一个对象将它们共同传递给函数。因此,设置(或重置)值会为所有使用它的方法设置(或重置)它。
另一方面,模式2允许用户使用其他值调用:user_id
。
第三方面,如果process
没有使用任何self.x值,那么没有理由通过它process
它可能应该是一个独立的函数而不是{{1 }} 方法。或者,如果self
永远不会被MyClass
访问,那么它不应该是实例变量。
一个类应该是属于一个的值和函数的集合,因为它们实现了一个概念或模型真实世界的对象集。
答案 1 :(得分:0)
第二个" 模式2 "是多余的,因为它意味着当它已经是实例属性时传递和访问参数self.val
。
无需传递实例的 local 属性内部方法的参数 - 它可以在类中的任何位置访问。
当然,它仅适用于process
方法只应处理当前实例的情况#39; s属性