python 公有属性和私有属性
十三、python 公有属性和私有属性
属性:
方法:
class Chinese(Person):
nation = 'China'
def __init__(self,name):
self.__name = name
def msg(self):
print self.name
属性:
-类属性
-实例属性
属性的可见性:
-公有属性
-私有属性
class Chinese(Person):
nation = 'China' #类属性
def __init__(self,id,name):
self.id = id #公有属性
self.__name = name #实例属性,私有属性
def msg(self):
print self.name
私有属性:
python并没有真正的私有属性
用__定义的属性,只是被改名换姓而已
用_定义的属性,意义在于唤起用户的注意,看成私有属性
------------------------------------------------------------------
class Chinese(object):
nation = 'Chain'
def __init__(self, id, name):
self._id = id
self.__name = name
def sayHi(self, msg):
print self.__name,msg
#定义实例
aidon = Chinese(1,'aidong')
bajie = Chinese(2,'bajie')
#通过类看类属性
Chinese.nation
#通过实例看类属性
aidon.nation
#通过类修改类属性
Chinese.nation=u'中国'
#再次查看
Chinese.nation
aidon.nation
bajie.nation
#通过实例修改类属性(只对该实例管用):尽量不用实例对象修改类属性
aidon.nation='Chain'
#查看实例字典
aidon.__dict__
#修改实例属性(_)的值(_id感觉是点没有被保护,底层也没有改名换姓)
aidon._id
aidon._id = 100 #是否能修改该实例对象的私有属性值(可以)
aidon._id
#修改实例属性(__)的值(__name感觉是点被保护,底层其实是改名换姓)
bajie.__name
bajie.__name = "tangzeng" #该方式修改是不对的 (相当于是新增咯)
bajie._Chinese__name = 'wukong' #这样才可以,我们定义实例属性是__name,但是压根被python改咯个名字,规律是:_classname__propertyname
#调用方法:
aidon.sayHi("hello aidon")
------------------------------------------------------------
怎么真正来操作(读写删除)属性呢?要直接访问属性就违背面向对象封装原则
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341