Python 官方文档:入门教程 => 点击学习
十三、python 公有属性和私有属性 属性: 方法: class Chinese(Person): nation = 'China' def __init__(self,name): self.__name = name def m
十三、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")
------------------------------------------------------------
怎么真正来操作(读写删除)属性呢?要直接访问属性就违背面向对象封装原则
--结束END--
本文标题: python 公有属性和私有属性
本文链接: https://www.lsjlt.com/news/184906.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0