当前位置:  开发笔记 > 编程语言 > 正文

这个语法用于实例化一个类有什么特别的原因吗?

如何解决《这个语法用于实例化一个类有什么特别的原因吗?》经验,为你挑选了1个好方法。

我想知道是否有人知道一个特定的原因(除了纯粹的风格)为什么以下语言这些语法启动一个类?

蟒蛇:

class MyClass:
    def __init__(self):

x = MyClass()

红宝石:

class AnotherClass
    def initialize()
    end
end

x = AnotherClass.new()

我无法理解为什么用于构造函数的语法和用于实际获取类的实例的语法是如此不同.当然,我知道它并没有真正有所作为,但是,例如,在ruby中,使构造函数"new()"有什么问题?



1> Brian Campbe..:

当您创建类的对象时,您所做的不仅仅是初始化它.你正在为它分配内存,然后初始化它,然后返回它.

还要注意,在Ruby中,new()是一个类方法,initialize()而是一个实例方法.如果你只是覆盖new(),你必须首先创建对象,然后对该对象进行操作,然后返回它,而不是更简单的initialize()地方,你可以引用它self,因为内置的对象已经为你创建了new() (或者在Ruby中,不要self暗示它.

在Objective-C中,您实际上可以更清楚地看到发生了什么(但更详细),因为您需要单独进行分配和初始化,因为Objective-C无法将参数列表从分配方法传递到初始化:

[[MyClass alloc] initWithFoo: 1 bar: 2];

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有