Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Smalltalk 如何初始化类变量?_Smalltalk_Pharo - Fatal编程技术网

Smalltalk 如何初始化类变量?

Smalltalk 如何初始化类变量?,smalltalk,pharo,Smalltalk,Pharo,我知道对于一个实例变量,我所要做的就是把它放在实例端的initialise方法中,并为它指定一个默认值。但是对于类变量,我是如何做到这一点的呢?我试图在类端创建一个初始化方法,但它没有给我的变量一个默认值,所以我必须在我的一个方法中这样做 pythonString ifNil:[pythonString := ''] 但我不喜欢这种方法 我也发现这是squeak,同样我也不喜欢这种方法。有没有合适的方法可以做到这一点。在Python中,赋值的情况相当简单,为什么对Pharo来说它如此神秘 首先

我知道对于一个实例变量,我所要做的就是把它放在实例端的initialise方法中,并为它指定一个默认值。但是对于类变量,我是如何做到这一点的呢?我试图在类端创建一个初始化方法,但它没有给我的变量一个默认值,所以我必须在我的一个方法中这样做

pythonString ifNil:[pythonString := '']
但我不喜欢这种方法


我也发现这是squeak,同样我也不喜欢这种方法。有没有合适的方法可以做到这一点。在Python中,赋值的情况相当简单,为什么对Pharo来说它如此神秘

首先,我希望您讨论的是类对象的实例变量(而不是在实例端定义为“类变量”)

initialize
正在工作,但它正在实例创建时运行。当您定义
initialize
方法时,实例(类对象)已经存在


因此,当您第一次定义类时,您应该自己运行它,例如,
YourClass initialize
,以后每次将类加载到系统中时,都应该对其进行初始化。

否,我是指在实例侧定义的类变量Uko的答案对类的类变量和实例变量都适用。您应该在类端#initialize方法中编写初始化,并在第一次手动执行。Monticello将在将来加载您的代码时负责执行它。谢谢Damien和Uko,回答已接受并投票:)我是否需要从我的初始值设定项调用
超级初始化
?注意,我的意思是
超级初始化
而不是
超类初始化
,这显然是错误的。