我只是想知道什么时候将东西存储为类实例的一部分,什么时候使用方法返回东西。例如,以下哪个会更好:
class MClass():
def __init__(self):
self.x = self.get_x()
self.get_y()
self.z = None
self.get_z()
def get_x(self):
return 2
def get_y(self):
self.y = 5 * self.x
def get_z(self):
return self.get_x() * self.x
关于这类事情的约定是什么,我什么时候应该给自己赋值,什么时候应该返回值?这本质上是一种公共(public)/私有(private)的区别吗?
请您参考如下方法:
- 你不应该
返回来自__init__的任何东西。 - Python 不是 Java。您不需要为所有内容都包含
get。 - 如果
x始终为 2,y始终为 10,而z始终为 12,则代码量很大。
做一些假设,我会写那个类:
class MClass(object):
def __init__(self, x):
self.x = x
def y(self):
return self.x * 5
def z(self):
return self.x + self.y()
>>> c = MClass(2)
>>> c.x
2
>>> c.y() # note parentheses
10
>>> c.z()
12
这允许 x 稍后更改(例如 c.x = 4)并且仍然为 y 和 z< 提供正确的值.
