类中的所有变量都必须在初始化时创建吗

2024-03-19 05:09:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学习课程,我有一个练习,创建一个类,做一些字符串函数。一个应该得到一个字符串,另一个应该打印字符串,但是我想知道您是否真的需要在def __init__:下创建变量,答案应该是这样的:

class InputOutString(object):
    def __init__(self):
        self.s = ""

    def getString(self):
        self.s = raw_input()

    def printString(self):
        print self.s.upper()

我在想,当您得到原始输入时,只创建变量会更加方便。在


Tags: 函数字符串答案selfinputrawobjectinit
1条回答
网友
1楼 · 发布于 2024-03-19 05:09:14

有点。在

Python不会强迫您这样做,但如果您不这样做,有时会导致问题

例如-如果在您的示例中,您没有初始化__init__中的s,那么如果您还没有调用getString,那么{}将引发一个异常。但是,如果您初始化了它(正如您在示例中所做的那样),那么它将打印一个空字符串—这在许多情况下都是可取的。在

初始化__init__中的所有变量可以保证在需要时它们都将存在。这就是为什么这是好的做法。在

您应该这样做的另一个原因是,它使python的工作更轻松when determining the amount of memory required to store your class。Python将检测在__init__中设置的属性并相应地分配大小。如果你改变了这个(通过在类上保存新的属性),那么你的类最终会占用你的类,这样每个实例的内存开销可能会增加一倍。(感谢@ShadowRanger指出这一点)

相关问题 更多 >