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。