鱼C论坛

 找回密码
 立即注册
查看: 1024|回复: 5

[已解决]关于self的问题

[复制链接]
发表于 2018-4-7 09:27:51 | 显示全部楼层 |阅读模式

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

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

x
class Nstr:
    def __init__(self, arg=' '):
        self = ord(arg)
        print(self)#检测
        print(type(self))#检测

    def __add__(self, other):
        print(self)#检测
        print(type(self))#检测
        return int.__add__(self) + int(other)
输出结果
>>> b = Nstr('b'); a = Nstr('a'); a + b
98
<class 'int'>
97
<class 'int'>
<__main__.Nstr object at 0x000001EAA1625C88>
<class '__main__.Nstr'>
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    b = Nstr('b'); a = Nstr('a'); a + b
  File "C:\Users\Jason\Desktop\test03.py", line 10, in __add__
    return int.__add__(self) + int(other)
TypeError: descriptor '__add__' requires a 'int' object but received a 'Nstr'

请问一下啊
self不是全局变量吗,我修改了self的类型后为什么后来它的类型又变回去了?
最佳答案
2018-4-7 12:50:54
Java:
class Demo{
    int value;
    public Demo(int value){
        this.value = value;    // 虽然在Java的方法签名中没有显式写出this,但是JVM把实例对象this传进去
    }
}

Python:
class Demo(object):
    def __init__(self, value):
        self.value = value    # Python就比较直接,在初始化方法的参数中传进self参数,用来标记该类的实例对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-7 09:32:46 | 显示全部楼层
Python的self,相当于Java的this——这你就全明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-7 09:36:33 | 显示全部楼层
ABC23 发表于 2018-4-7 09:32
Python的self,相当于Java的this——这你就全明白了。

Java还没学
能不能简单的帮我讲一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-7 09:46:37 | 显示全部楼层
ABC23 发表于 2018-4-7 09:32
Python的self,相当于Java的this——这你就全明白了。

相当于C++的this指针吗?
C++学过一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-7 12:50:54 | 显示全部楼层    本楼为最佳答案   
Java:
class Demo{
    int value;
    public Demo(int value){
        this.value = value;    // 虽然在Java的方法签名中没有显式写出this,但是JVM把实例对象this传进去
    }
}

Python:
class Demo(object):
    def __init__(self, value):
        self.value = value    # Python就比较直接,在初始化方法的参数中传进self参数,用来标记该类的实例对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-7 14:17:15 From FishC Mobile | 显示全部楼层
self是相当于c++中的this指针
但是它们都不是这样用的,你应该用
self.value的形式,而不是直接用self
对应c++中为this->value

评分

参与人数 1荣誉 +5 收起 理由
苏丛 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 23:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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