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

Python笔记,面向对象(8)私有属性

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

Python笔记,面向对象(8)私有属性

私有化属性的概念和意义
 		含义:修改类属性都是直接通过类名修改的。
 		如果有些重要属性不想让别人随便修改,
 		或者防止意外修改,该如何处理?

​		意义:为了更好的保存属性安全,
		即不能随意修改,将属性定义为私有属性
		,添加一个可调用的方法去访问。

​		注意:Python并没有真正的私有化支持,
		但是可以通过下划线完成私有的效果,
		类属性(方法)和实例属性(方法)遵循相同的规则

添加不同下划线的结果:

x 共有属性 ----不添加任何东西

​		类内部访问

​		子类内部访问

​		模块其他位置访问

​					类访问---->父类,派生类

​					实例访问----->父类派生类,派生类实例

​		跨模块访问

​			   	 import形式导入

​			    	from模块import*形式导入
class Animal:
    x = 10
    def test(self):
        print(Animal.x)
        print(self.x )
    pass 

class Dog(Animal):
    def test2(self):
        print(Dog.x)
        print(self.x)
    pass

a = Animal()
d = Dog()


print(Animal.x)
print(Dog.x)
print(a.x)
print(d.x)



#10     都可以访问
#10
#10
#10

_y 受保护属性

​			类内部访问

​			子类内部访问

​			模块其他位置访问

​			跨模块位置访问
class Anumal:
    _y = 10
    def test(self):
        print(Animal._y)
        print(self._y)
    pass

class Dog(Animal):
    def test2(self):
        print(Dog._y)
        print(self._y)
    pass   

  
a = Animal()
d = Dog()


print(Animal._y)
print(Dog._y)
print(a._y)
print(d._y)   

__x

class Anumal:
    __x = 10
    def test(self):
        print(Animal.__x)
        print(self.__x)
    pass

class Dog(Animal):
    def test2(self):
        print(Dog.__x)
        print(self.__x)
    pass   

  
a = Animal()
d = Dog()

#d.test2()       会报错


print(Animal.__x)   #报错,不能通过类名访问此处的私有属性
print(Dog.__x)
print(a.__x)
print(d.__x)


名字重整机制


使用私有属性的场景

​		数据保护

​		1、把特定的一个属性隐藏起来,不想让外部直接进行调用。
​		2、想保护这个属性,不想让属性的值随意改变
​		3、保护这个属性,不想让派生类【子类】去继承。


​ 小结:
​

   1、私有化的【实例】属性,
不能在外部直接的访问,可以在类的内部随意的使用
   2、子类不能继承父类的私有化属性【只能继承父类公共的属性和行为】
	​3、在属性名的前面直接加__就可以变为私有化了。
	
特性:
	​1、私有化属性在类外部不可以访问、修改
	​2、私有化属性在类的内部访问、修改
	​3、子类不能继承私有化属性
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015140.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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