答案: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 class Box:

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

3 self.boxname = boxname

4 self.size = size

5 self.color = color # self就是用于存储对象属性的集合,就算没有属性self也是必备的

6

7 def open(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 def close(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

class Box:

def myInit(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 #注释掉原来标准的初始化

def open(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))

def close(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 class Box:

2 def myInit(mySelf, boxname, size, color):

3 print(mySelf.__dict__)#显示为{}空字典

4 mySelf.boxname = boxname

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

6 mySelf.size = size

7 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 def open(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 def close(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' ,成功设置完成

python中class什么意思_【转载】在python的class中的,self到底是什么?相关推荐

  1. python数据框常用操作_转载:python数据框的操作

    我们接着上次分享给大家的两篇文章:Python数据分析之numpy学习(一)和Python数据分析之numpy学习(二),继续讨论使用Python中的pandas模块进行数据分.在接下来的两期pand ...

  2. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  3. [转载] python中的且语句_简单探讨python中的语句和语法

    参考链接: 在Python中解包:并行分配之外 python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了, ...

  4. [转载] python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法

    参考链接: Python中字符串string capitalize 字符串是字符序列.Python中内置的string类代表基于Unicode国际字符集的字符串.除了Python中常见的操作外,字符串 ...

  5. 此上下文中不支持函数定义。请在代码文件中创建函数。_深入解析Python上下文管理器,让你不再迷茫!...

    1. 上下文管理器 一个类只要实现了 __enter__() 和 __exit__() 这个两个方法,通过该类创建的对象我们就称之为上下文管理器. 上下文管理器可以使用 with 语句,with语句之 ...

  6. python如何初始化对象数组_如何理解Python中的面向对象编程?

    (由Python大本营付费下载自视觉中国) 作者 | Radek Fabisiak 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 现如今面向对象编程的使用非常广泛,本文 ...

  7. python向数据库写入数据_如何用Python向Mysql中插入数据

    我们使用Python经常会和Postgresql进行搭配,很少将python和mysql进行搭配.下面小编给大家分享如何用Python向Mysql中插入数据. 工具/原料 Pycharm 方法/步骤 ...

  8. python中的列表理解_掌握『Python列表理解』需要知道的9件事,你知道了吗?

    越来越多的人开始学习Python,它已经成为最流行的编程语言之一,这几乎发生在所有领域.比如网络开发.科学计算,当然还有人工智能. 无论想用python干什么,都绕不开学习Python的数据结构.变量 ...

  9. python各个关键词的意思_想学好Python,你必须了解Python中的35个关键词

    每种编程语言都会有一些特殊的单词,称为关键词.对待关键词的基本要求是,你在命名的时候要避免与之重复.本文将介绍一下Python中的关键词.关键词不是内置函数或者内置对象类型,虽然在命名的时候同样也最好 ...

  10. python如何创建工程预设_如何在sublime3项目设置中设置python模块的搜索路径?ImportError: No module named *的解决办法...

    问题:之前使用pycharm,用的挺溜,但是电脑配置实在不争气,pycharm启动久了,耗去大量内存,导致运行起来越来越慢,于是转向使用sublime text. 把项目从pycharm切换到subl ...

最新文章

  1. 在Python源中使用UTF-8编码[重复]
  2. linux我ll查不到usr,Linux学习-文件查寻
  3. WPF 实现一个酷酷的Loading
  4. java基础的知识点(一)
  5. 【java】java ReentrantLock 源码详解
  6. RSYNC安装使用详解
  7. POJ 1095 Trees Made to Order
  8. UVA12190 Electric Bill【二分搜索】
  9. java 迭代器_Java中 ( Iterator ) 迭代器 详解 ( JDK8源码 )
  10. java lucene 站内搜索_完整的站内搜索Demo(Lucene.Net+盘古分词)
  11. unity的立方贴图
  12. 人生如常,常亦无常,亦无进,茫然终身,谓常
  13. java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
  14. 读《大数据时代》有感
  15. 物联网推进水产养殖业标准化规模化进程
  16. python3封装微信分账功能
  17. html中 选择子元素 子元素选择器
  18. 后端返回amr格式音频前端处理播放播放(个人笔迹)
  19. malloclab 实验详解(动态分配器如何设计)
  20. Development Build:

热门文章

  1. virtualenv
  2. IOS Window窗口使用
  3. Shell编程 之 while循环 和 until循环 和 总结
  4. bzoj 2600: [Ioi2011]ricehub
  5. 【Android基础】页面跳转与传值(Activity跳转与传值)
  6. 关于mount nfs时-o nolock的问题
  7. STL里面的sort()函数使用结构体
  8. 大数据之-Hadoop三大发行版本---大数据之hadoop工作笔记0010
  9. 大数据之-入门_大数据部门业务流程分析---大数据之hadoop工作笔记0006
  10. 大数据_Hbase-(数据写入流程)---Hbase工作笔记0009