栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【python学习】python私有化和动态设置-25

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【python学习】python私有化和动态设置-25

python面向对象 - 私有化:
    1、_属性/_方法   
        约定俗成。
        通过对象名._属性/_方法实际上是可以访问的。
        但是它的意思就是,别访问我,我是私有化。全靠自觉
        
    2、__属性/__方法
        深度私有。
        通过对象名.__属性/__方法访问不到。
        只有类内部可以访问。

class dog:
    def __init__(self,colour_a):
        self.colour_a=colour_a
        self._colour_b = "白色"
        self.__colour_c = "黑色"
    def dogs(self):
        print("小狗颜色是{}".format(self._colour_b))


tt=dog("花色")
print(tt.colour_a)
print("浅度私有",tt._colour_b)
print("深度私有",tt.__colour_c)


----------------------------运行结果----------------------------

花色
浅度私有 白色
Traceback (most recent call last):
    print("深度私有",tt.__colour_c)
AttributeError: 'dog' object has no attribute '__colour_c'
class dog:
    def __init__(self,colour_a):
        self.colour_a=colour_a
        self._colour_b = "白色"
        self.__colour_c = "黑色"
    def dogs(self):
        print("小狗颜色是{}".format(self.__colour_c))


tt=dog("花色")
print(tt.colour_a)
print("浅度私有",tt._colour_b)

tt.dogs()
# print("深度私有",tt.__colour_c)


----------------------打印结果----------------------

花色
浅度私有 白色
小狗颜色是黑色

注*:

        如果类内部定义了访问私有的方法。可以通过这个方法得到私有属性的值。
        如果没有定义的话,那私有属性就是除了类以外,都不可以访问

判断某一个对象,是否为类的一个实例,语法:isinstance 

hasattr(类/对象, 属性) - 类/对象 是否有某个属性
setattr(类/对象, 属性, 值) - 给类/对象 设置某个属性(有则修改,无则添加)
getattr(类/对象, 属性) - 获取类/对象 某个属性的值
delattr(类/对象, 属性) - 删除类/对象 某个属性

 用法:

'''
hasattr、setattr、getattr、delattr的使用
hasattr(类/对象, 属性) - 类/对象 是否有某个属性
setattr(类/对象, 属性, 值) - 给类/对象 设置某个属性(有则修改,无则添加)
getattr(类/对象, 属性) - 获取类/对象 某个属性的值
delattr(类/对象, 属性) - 删除类/对象 某个属性
'''
class dog:
    def __init__(self,colour,hair,size):
        self.colour=colour
        self.hair=hair
        self.size=size


    def dogs(self):
        print("小狗颜色是{}".format(self.colour))

tt=dog("黄色","金毛","大")

print("hasattr用法"+"-"*30)
print(hasattr(tt,"height"))   #类属性当中是否有height,有就True,没有就False
print(hasattr(tt,"colour"))   #类属性当中是否有colour,有就True,没有就False

print("setattr用法"+"-"*30)
setattr(tt,"height","好高")   #如果类属性当中没有height,那么就在原本基础添加
setattr(tt,"colour","白色")   #如果类属性当中有colour,那么就在原本基础修改
#setattr用法,修改或者添加的时候,是不会打印内容
print("#setattr用法,修改或者添加的时候,是不会打印内容")

print("getattr用法"+"-"*30)
print(getattr(tt,"height"))   #获取height的属性值
print(getattr(tt,"colour"))   #获取colour的属性值

print("colour用法"+"-"*30)
delattr(tt,"colour")          #删除colour的属性值
#colour用法删除的时候,是不会打印内容
print("#colour用法删除的时候,是不会打印内容")



-------------------------打印结果-------------------------


hasattr用法------------------------------
False
True
setattr用法------------------------------
#setattr用法,修改或者添加的时候,是不会打印内容
getattr用法------------------------------
好高
白色
colour用法------------------------------
#colour用法删除的时候,是不会打印内容


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号