我正在阅读Apple的文档,The Objective-C Programming Language(PDF链接)。在pg。 18,在接收者的实例变量下,我看到了这一点。
方法可以自动访问接收对象的实例 变量。您不需要将它们作为参数传递给方法。 例如,上面说明的
primaryColor
方法不需要 参数,但它可以找到otherRect
的主要颜色并返回 它。每个方法都假定接收者及其实例变量, 无需将它们声明为参数。此约定简化了Objective-C源代码。它也支持 面向对象程序员思考对象和消息的方式。 信件被发送到接收器,就像信件被发送到您的 家。消息参数将信息从外部传递到 接收器;他们不需要把接收器带到自己身上。
我想更好地理解他们所描述的内容;这是Python的self
参数,还是样式?
答案 0 :(得分:9)
Objective-C是C的严格超集。
所以Objective-C方法是“只是”函数指针,实例是“只是”C结构。
方法有两个隐藏参数。第一个是self
(当前实例),第二个是_cmd
(方法的选择器)。
但是文档在第18页中描述的是从方法访问类实例变量。
它只是说类的方法可以访问该类的实例变量。 从面向对象的角度来看,这是非常基本的,但不是从C角度来看。
它还表示你不能从另一个类实例访问实例变量,除非它们是公共的。
答案 1 :(得分:1)
虽然我不会说这是对Python的“大满贯”,但它肯定是指对象方向的Python风格(诚实地说,它源自C中可用的“伪对象方向”)(是否真的是OO是对另一个论坛的辩论))。
值得记住的是,Python与世界其他地方的范围概念截然不同 - 每种方法或多或少存在于其自身的小现实中。这与更多“自我意识”语言形成对比,这些语言要么具有“this”变量,要么具有某种形式的隐式实例构造。