python类设计:直接在方法中使用成员变量还是将成员变量传递给方法?
只是好奇,以下模式的利弊是什么 模式1python类设计:直接在方法中使用成员变量还是将成员变量传递给方法?,python,design-patterns,Python,Design Patterns,只是好奇,以下模式的利弊是什么 模式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(se
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
哪一个更好,为什么
谢谢 第二个“模式2”是多余的,因为它意味着在已经是实例属性的情况下传递和访问参数
self.val
。无需将实例的本地属性作为参数传递给内部方法-它可以在类中的任何位置访问。
当然,只有当
process
方法应该只处理当前实例的属性时,才会出现这种情况。一般来说,模式1:将实例属性作为一个对象的属性收集在一起的目的是通过传递一个对象将它们集体传递给函数。因此,设置(或重置)该值将为所有使用该值的方法设置(或重置)该值
另一方面,模式2允许用户使用其他值调用process
第三方面,如果process
没有使用任何self.x值,那么就没有理由传递它self
,它可能应该是一个独立的函数,而不是MyClass
方法。或者,如果从未将val
作为self.val
访问,则它不应是实例变量
类应该是属于一起的值和函数的集合,因为它们实现了一个概念或为一组真实对象建模