鱼C论坛

 找回密码
 立即注册
查看: 1243|回复: 7

[已解决]关于类的求助

[复制链接]
发表于 2020-9-10 10:58:05 | 显示全部楼层 |阅读模式
10鱼币
class testclass:
    data = 100
    def setpdata(self,value):
        self.pdata = value
    def showpdata(self):
        print('self.pdata=',self.pdata)
    print('类testclass加载完成')

想问下各位大佬,第四行的self.pdata是什么?查了下网上,self指的是实例自己,但.pdata是啥么鬼?类通过  对象名.属性名  调用类属性,但这个类里面搞个函数写个self.pdata = value 是什么意思?
最佳答案
2020-9-10 10:58:06
本帖最后由 CH10 于 2020-9-10 11:22 编辑

.pdata和data一样的都是testclass的成员变量,你调用setdata(100)就会在testclass产生pdata这个成员变量并且赋值为100
补充一下,如果没有调用setdata(),pdata这个变量是不存在的
class ds:
    def setb(self, b):
        self.a=b
    def showb(self):
        return self.a
a=ds()
#print(a.a)
a.setd(10)
print(a.a)

最佳答案

查看完整内容

.pdata和data一样的都是testclass的成员变量,你调用setdata(100)就会在testclass产生pdata这个成员变量并且赋值为100 补充一下,如果没有调用setdata(),pdata这个变量是不存在的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-10 10:58:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 CH10 于 2020-9-10 11:22 编辑

.pdata和data一样的都是testclass的成员变量,你调用setdata(100)就会在testclass产生pdata这个成员变量并且赋值为100
补充一下,如果没有调用setdata(),pdata这个变量是不存在的
class ds:
    def setb(self, b):
        self.a=b
    def showb(self):
        return self.a
a=ds()
#print(a.a)
a.setd(10)
print(a.a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-10 11:02:49 From FishC Mobile | 显示全部楼层
就是自己弄了个参数,方便类里面的其他函数调用,按我的理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-10 13:21:05 | 显示全部楼层
CH10 发表于 2020-9-10 11:05
.pdata和data一样的都是testclass的成员变量,你调用setdata(100)就会在testclass产生pdata这个 ...

那self.pdata = value和data = 100有什么区别呢?都是成员变量,但语法不一样,莫得区别吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-10 14:15:57 | 显示全部楼层
scc1992226 发表于 2020-9-10 13:21
那self.pdata = value和data = 100有什么区别呢?都是成员变量,但语法不一样,莫得区别吗?

区别不是很明显么,data变量,你创建testclass就会产生了,pdata变量只有你调用setdata的方法的时候才会出现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-10 14:26:23 | 显示全部楼层
scc1992226 发表于 2020-9-10 13:21
那self.pdata = value和data = 100有什么区别呢?都是成员变量,但语法不一样,莫得区别吗?

data这个变量在实例后你改变不了。pdata你可以通过实例的setpdata方法在程序里随时修改。

评分

参与人数 1鱼币 +5 收起 理由
scc1992226 + 5

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-9-10 14:38:42 | 显示全部楼层
fall_bernana 发表于 2020-9-10 14:26
data这个变量在实例后你改变不了。pdata你可以通过实例的setpdata方法在程序里随时修改。

是不是data是类变量,而pdata是实例变量,而self就指向了那个实例,所以是self.pdata.
这样理解对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-10 14:39:33 | 显示全部楼层
CH10 发表于 2020-9-10 14:15
区别不是很明显么,data变量,你创建testclass就会产生了,pdata变量只有你调用setdata的方法的时候才会 ...

是不是data是类变量,而pdata是实例变量,而self就指向了那个实例,所以是self.pdata.
这样理解对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 16:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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