python私有属性的定义方式如下:

python没有访问控制
在析构函数中定义类的属性
构造对象时 把属性的值传进去
那么每个对象的属性值都不太一样
1.没有下划线 公开访问
所有类里面的属性都是一样的
class Person(object):
def __init__(self, name, age):
self.name = name
self.__age = age
p = Person('zhao', 30)
1,__age属性在外部不能访问,但可以通过 _Person__age 这样的形式访问到;
2,调用 p.__dict__() 可以得到包含所有属性名和属性值的字典;
没有下划线的属性是公有属性,一个下划线的属性是私有属性,两个下划线的属性则是部分实现私有属性(类内可以进行访问,但是在创建类的对象中不能使用)
变量名前加一个下划线表示私有变量,调用的时候仍可以访问;
变量名前加两个下划线后该变量只能在类的内部访问
如果直接在类里面定义属性,那么以后所有对象的实例化属性都不会变了(都是类里面定义好的属性了)。
所以我们要在构造函数里定义属性来进行封装
dir(class name):打印类的属性
programer.__dict__ :从构造函数获得属性
programer._Programer__wegigtht:可以获取私有属性
定义类的属性
定义类的属性第二个方法
定义类的属性的一个方法
#Python进阶
Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。


关于私有属性:
self._age = age
只是编程中靠自觉起的名字而已,实际上仍可以访问。
fqgqe ef
定义类的属性:
在类里定义,类里所有对象共享该属性
在构造函数里定义,在构造对象时将属性值传入
没有访问控制(JAVA:Public&Private),没有提供私有属性的功能
class Programer(object):
hobby = 'Play Computer'
def __init__(self, name, age, weight):
self.name = name #无下划线-->可以公开访问
self._age = age #有一个下划线-->私有属性,仍可访问
self.__weight = weight #两个下划线-->部分私有属性,需要改变属性名访问
def get_weight(self): #定义获取weight属性的方法
return self.__weight
if __name__ == '__main__':
programer = Programer('Albert', 25, 80) #对象实例化
print dir(programer)
print programer.__dict__ #从构造函数里获得的属性
print programer.get_weight()
print programer._Programer__weight #“对象名._类名__属性名”的方法访问
直接在类里定义:这个类的所有对象,属性都是一样的
在构造函数里定义:在构造对象的时候把值传进去,每个对象的属性不太相同
在属性名前面加两个__会改变属性名的属性。
class Programer(object): def __init__(self,name,age) self.name = name self.age = age
()(,,,).name._age.__weight().__weight pPerson(,,) (p.name) (p._age) (p.__getweight__()) (p._Person__weight) ((p)) (p.)
