python中class什么意思_在python的class中的,self到底是什么?

答案:self可以理解为一个字典变量,内部存的就是对象的数据属性。如:{'name':'zhang','age':'18'}就是这些。

注意只有数据属性,并没有创建新的类的方法。 类----->通过实例化生成----对象---->(对象只是一串类似于字典的数据,没有把类的里的方法复制给你,python没有new这个方法!)

在python2中分为

经典类:

class Box:

pass

新式类:

class Box(object):

pass

在python3中,只有新式类:

class Box:

pass

在python的class中的,self到底是什么?

上实例:

class.py

1 classBox:2 def __init__(self, boxname, size, color):3 self.boxname =boxname4 self.size =size5 self.color = color #self就是用于存储对象属性的集合,就算没有属性self也是必备的

6

7 defopen(self, myself):8 print('-->用自己的myself,打开那个%s,%s的%s' %(myself.color, myself.size, myself.boxname))9 print('-->用类自己的self,打开那个%s,%s的%s' %(myself.color, myself.size, myself.boxname))10

11 defclose(self):12 print('-->关闭%s,谢谢' %self.boxname)13

14

15 b = Box('魔盒', '14m', '红色')16 b.close()17 b.open(b) #本来就会自动传一个self,现在传入b,就会让open多得到一个实例对象本身,print看看是什么。

18 print(b.__dict__) #这里返回的就是self本身,self存储属性,没有动作。

以上代码当中:

self 就是 对象/实例 属性的集合,

他们之间的关系如下:

1、Box是个类 ——》实例化——》b 对象/实例

2、Box类python中显示为: (接下一行)

——》实例化:b=Box('魔盒', '14m', '红色') (接下一行)

——》得到对象/实例b,显示为<__main__.Box object at 0x00000233857AA518>

3、抽象体(接下一行)

——》实例的过程(接下一行)

——》得对对象,含有属性:{'boxname': '魔盒', 'size': '14m', 'color': '红色'},即self。

self看似是一整个对象,实际上描述明白一个类就是生产对象的过程,描述了self就是得到了对象。所以self内的健值可以直接使用。

正如自然界中,一个有效的对象,必须包括:1、描述对象的属性;2、对象的方法。

所以self是必须的,也是对象中重要的特性。

当掌握了这个原理以后,我们试试以下的代码,感觉更加神奇。让我们明白重要的是它的思路:

class02.py

classBox:defmyInit(mySelf, boxname, size, color):

mySelf.boxname=boxname

mySelf.size=size

mySelf.color= color #自己写一个初始化函数,一样奏效,甚至不用self命名。其它函数当中用标准self

return mySelf #返回给实例化过程一个对象!神奇!并且含有对象属性/字典

#def __init__(self, boxname, size, color):

#self.boxname = boxname

#self.size = size

#self.color = color #注释掉原来标准的初始化

defopen(self, myself):print(self)print('-->用自己的myself,打开那个%s,%s的%s' %(myself.color, myself.size, myself.boxname))print('-->用类自己的self,打开那个%s,%s的%s' %(myself.color, myself.size, myself.boxname))defclose(self):print('-->关闭%s,谢谢' %self.boxname)#经过改造,运行结果和标准初始化没区别

b= Box().myInit('魔盒', '14m', '红色')#b = Box('魔盒', '14m', '红色')#注释掉原来标准的初始化方法

b.close()

b.open(b)#本来就会自动传一个self,现在传入b,就会让open多得到一个实例对象本身,print看看是什么。

print(b.__dict__) #这里返回的就是self本身,self存储属性,没有动作。

换个角度来讲,

对类的操作有:1、定义属性 2、调节方法的选项

——》在适当的设置以后《———

类对的反馈有:1、得到属性 2、执行方法

在类的函数当中,self为什么是必要参数,因为他是对象的载体,可以理解成一个字典。

通过以下代码演示:

1 classBox:2 defmyInit(mySelf, boxname, size, color):3 print(mySelf.__dict__)#显示为{}空字典

4 mySelf.boxname =boxname5 mySelf.__dict__['aa'] = 'w'#甚至可以像字典一样操作

6 mySelf.size =size7 mySelf.color = color #自己写一个初始化函数,一样奏效,甚至不用self命名。其它函数当中用标准self

8 return mySelf #返回给实例化过程一个对象!神奇!并且含有对象属性/字典

9

10 #def __init__(self, boxname, size, color):

11 #self.boxname = boxname

12 #self.size = size

13 #self.color = color #注释掉原来标准的初始化

14

15 defopen(self, myself):16 print(self)17 print('-->用自己的myself,打开那个%s,%s的%s' %(myself.color, myself.size, myself.boxname))18 print('-->用类自己的self,打开那个%s,%s的%s' %(myself.color, myself.size, myself.boxname))19

20 defclose(self):21 print('-->关闭%s,谢谢' %self.boxname)22

23

24 #经过改造,运行结果和标准初始化没区别

25

26 b = Box().myInit('魔盒', '14m', '红色')27 #b = Box('魔盒', '14m', '红色')#注释掉原来标准的初始化方法

28 b.close()29 b.open(b) #本来就会自动传一个self,现在传入b,就会让open多得到一个实例对象本身,print看看是什么。

30 print(b.__dict__) #这里返回的就是self本身,self存储属性,没有动作。

执行结果

{}-->关闭魔盒,谢谢<__main__.Box object at 0x0000026A2CBAA5F8>

-->用自己的myself,打开那个红色,14m的魔盒-->用类自己的self,打开那个红色,14m的魔盒

{'boxname': '魔盒', 'aa': 'w', 'size': '14m', 'color': '红色'}

注意看:'aa':'w' ,成功设置完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值