python类属性、实例属性及私有属性【For Java 程序员】
2015-12-04 17:09
429 查看
1. 相同点:
类属性相当于Java中的static属性,实例属性相当于Java中的public的实例属性,私有属性相当于Java中的私有属性;
2.不同点:
Java中的类属性可以被类或其任意实例修改,但是python中的类属性,只能由类修改,下面通过例子进行分析:
class User():
number = 20
def __init__(self,name,major):
self.name = name
self.__major = major #实例私有属性
def print_major(self):
print self.__major
obj = User("Andy","software engineer")
2.1. Python中,类属性直接在类模块中定义,可以通过类或者其实例可以直接访问:
print User.number , obj.number #输出一致:20, 20
2.2 通过类修改number值:
User.number = 35
print User.number , obj.number #输出一致:35,35
2.3 Python中,实例对象可以动态添加其实例属性:
obj.number= 15
print User.number, obj.number #输出不一致:35,15 (此时,类实例对象obj是自己的实例属性,覆盖同名的类属性)
3. python 实例属性&私有实例属性
私有属性在类中以‘__’开头,例子中的 ‘__major';
实例属性在类的__init__方法中定义,例子中的 'name' ; 同时可以动态创建,如2.3。
类属性相当于Java中的static属性,实例属性相当于Java中的public的实例属性,私有属性相当于Java中的私有属性;
2.不同点:
Java中的类属性可以被类或其任意实例修改,但是python中的类属性,只能由类修改,下面通过例子进行分析:
class User():
number = 20
def __init__(self,name,major):
self.name = name
self.__major = major #实例私有属性
def print_major(self):
print self.__major
obj = User("Andy","software engineer")
2.1. Python中,类属性直接在类模块中定义,可以通过类或者其实例可以直接访问:
print User.number , obj.number #输出一致:20, 20
2.2 通过类修改number值:
User.number = 35
print User.number , obj.number #输出一致:35,35
2.3 Python中,实例对象可以动态添加其实例属性:
obj.number= 15
print User.number, obj.number #输出不一致:35,15 (此时,类实例对象obj是自己的实例属性,覆盖同名的类属性)
3. python 实例属性&私有实例属性
私有属性在类中以‘__’开头,例子中的 ‘__major';
实例属性在类的__init__方法中定义,例子中的 'name' ; 同时可以动态创建,如2.3。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法