Python类之类的成员
2019-04-11 10:43:15来源:博客园 阅读 ()
对于一个学C++的朋友来说,Python类中,哪些是私有成员,哪些是共有成员,估计一直傻傻分不清。
一、本篇博客要解决的问题:
Python类中,哪些是私有成员?哪些是共有成员?
二、 关于Python的类
要想了解Python的类,就必须认识到,当你在Python中写了一个类的时候,你就已经构建了一个新的类型。
所以,你写的类型其本身有属性和方法,而类型对应的实例,也有自己的属性,不过并没有方法。
也就是说,Python中的类,实际上有两层含义,第一层是类本身,第二层是实例。
类型本身有属性和方法,类的属性可以在所有实例中传递,类的方法用来处理实例的数据。
实例本身只有属性,没有方法,属性就是要被类的方法所处理的数据。
Python通过class语句定义一个类,通过__init__(self, *para)构造一个实例,并通过__del__(self)来解构。class是类,self是实例。
三、解决问题。
了解了上面所说的类和实例之后,你可能就已经明白了。Python中类的属性其实就是共有变量,我们称之为类的变量,类的变量可以在所有实例中间传递。而实例的属性则可以大致看成是私有变量,但其实这并不是严格意义上的私有变量,因为我们依然可以通过instance.property来访问并修改这些属性。综上所述:Python中,类的成员,有两种。
1、类成员。可以通过Class.property来调用,也可以通过instance.property来调用,该属性可以在所有实例中传递
2、实例的成员。只能通过instance.property来调用,该属性不与其他实例共享。
3、注意,类的self相当于C++中的指针,但是也有所不同,因为self只指示该实例的数据,不指示类的属性和方法。所以当你需要在类的方法中调用类的属性或者类的其他方法的时候,你需要用类名或者self来指明。但是用类名和用self来指明时,结果是不一样的。详情请见四中的实例代码。
四、示例代码
# -*- coding: utf-8 -*- # author: zxr # time: 2019-04-10 # functionality: test class class TestClass: val = 0 def __init__(self, v): self.val1 = v def show(self): print ('-'*60) print (self.val1) def add_using_classname(self): self.val1 += TestClass.val TestClass.show(self) # below code is unvalid # self.val1 += val # show() def add_using_self(self): self.val1 += self.val self.show() if __name__ == '__main__': tc = TestClass(1) tp = TestClass(10) print (TestClass.val) print (tc.val) print (tc.val1) print (TestClass.val) print (tp.val) print (tp.val1) print ('-'*60) TestClass.val = 2 print ('-'*60) print (TestClass.val) print (tc.val) print (tc.val1) print (TestClass.val) print (tp.val) print (tp.val1) print ('-'*60) tp.val1 = 3 tc.val1 = 4 tp.val = 30 tc.val = 40 print ('-'*60) print (TestClass.val) print (tp.val) print (tc.val) print (tp.val1) print (tc.val1) tc.add_using_classname() tp.add_using_classname() tc.add_using_self() tp.add_using_self()
总结:Python中的类与C++中的类是不一样的。Python中的每实例化一个实例之后,就拷贝了一个该类的副本,对这个实例的任何修改都不会影响到类。同样的,要想修改类中的属性,也只能在类中修改,在实例中的修改影响不了其他实例。
原文链接:https://www.cnblogs.com/xianranzhang/p/10683124.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python学习之控制流2
下一篇:Python的数据库操作
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash