scc1992226 发表于 2020-9-10 10:58:05

关于类的求助

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 是什么意思?

CH10 发表于 2020-9-10 10:58:06

本帖最后由 CH10 于 2020-9-10 11:22 编辑

{:10_277:}.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)

bonst 发表于 2020-9-10 11:02:49

就是自己弄了个参数,方便类里面的其他函数调用,按我的理解

scc1992226 发表于 2020-9-10 13:21:05

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

那self.pdata = value和data = 100有什么区别呢?都是成员变量,但语法不一样,莫得区别吗?

CH10 发表于 2020-9-10 14:15:57

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

区别不是很明显么,data变量,你创建testclass就会产生了,pdata变量只有你调用setdata的方法的时候才会出现

fall_bernana 发表于 2020-9-10 14:26:23

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

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

scc1992226 发表于 2020-9-10 14:38:42

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

是不是data是类变量,而pdata是实例变量,而self就指向了那个实例,所以是self.pdata.
这样理解对吗?

scc1992226 发表于 2020-9-10 14:39:33

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

是不是data是类变量,而pdata是实例变量,而self就指向了那个实例,所以是self.pdata.
这样理解对吗?
页: [1]
查看完整版本: 关于类的求助