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、子类不能继承私有化属性
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值