鱼C论坛

 找回密码
 立即注册
查看: 3397|回复: 9

[已解决]关于self. other.的疑问

[复制链接]
发表于 2020-2-29 16:13:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Vector:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def __str__(self):
        return 'Vector (%d, %d)' % (self.a, self.b)
   
    def __add__(self,other):
        print(other.a)
        print(other.a.__class__)
        return Vector(self.a + other.a, self.b + other.b)
   
v1 = Vector(2,10)
v2 = Vector(5,-2)
print(v1 + v2)


问题:
从网上发现这么一段代码,突然发现了other.a的用法。然后就有点晕,不知道为什么还有这种用法。

尝试对other.a进行打印,已经类型打印,打印结果如下:
5
<class 'int'>
Vector (7, 8)

发下这个other.a实际上应该是加数的赋值,但是这个原理是是什么,没见过这种用法昂,求大神告知
最佳答案
2020-2-29 17:43:11
other就是 Vector 对象的实例对象
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-29 16:24:52 | 显示全部楼层
什么的原理?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 16:39:33 | 显示全部楼层

就是other.是什么鬼,还有这种用法?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 16:46:38 | 显示全部楼层
jiujiaomutou 发表于 2020-2-29 16:39
就是other.是什么鬼,还有这种用法?

有啊,就是访问other的a属性
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 16:50:12 | 显示全部楼层
qiuyouzhi 发表于 2020-2-29 16:46
有啊,就是访问other的a属性

但是__init__里面定义了self.a的属性,但是other.a是什么时候定义的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 16:51:00 | 显示全部楼层
jiujiaomutou 发表于 2020-2-29 16:50
但是__init__里面定义了self.a的属性,但是other.a是什么时候定义的

__add__魔法方法不是有一个other属性吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 16:51:42 | 显示全部楼层
正常呀,比如
x = Vector(1, 2)
y = Vector(3, 4)
x + y
则y就是other
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 16:54:46 | 显示全部楼层
jiujiaomutou 发表于 2020-2-29 16:50
但是__init__里面定义了self.a的属性,但是other.a是什么时候定义的

other 就是你相加的第二个数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 17:21:26 | 显示全部楼层
  1. v1 + v2
复制代码
这个 "+" 号调用的是 v1 对象的 __add__(self, other) 方法,此时这个 self 即是 v1 本身,而这个 other 即是 v2,
而 v2 也是 Vector 对象,所以 它也有 a 和 b 属性,故可以调用 other.a/other.b
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 17:43:11 | 显示全部楼层    本楼为最佳答案   
other就是 Vector 对象的实例对象
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-1 18:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表