python--封装

简介: python--封装

封装


广义的封装: 实例化一个对象,给对象空间封装一些属性.

狭义的封装: 私有制.

私有属性

python遇到私有属性或者私有变量的时候,会在私有属性前加上_类名,如下面的B类的__money,python在执行到这句的时候,会变成_B__money=1000,可以通过B.__dict__来查看

class B:
    __money = 1000
class A(B):
    name = "zou"
    __age = 18
    def func(self):
        print(self.__age)
        print(A.__age)
        print("func...")
a1 = A()
print(a1.__age)  # 会报错,实例化对象不能访问静态字段
print(A.__age)  # 会报错,类名不能访问静态变量
a1.func()  # 对于私有静态字段来说,只能在本类中内部访问,类的外部,派生类均不可访问

当然,也可以使用其他方法访问

print(A._A__age)
print(A.__dict__)

私有方法

class B():
    __money = 1000
    def __f1(self):
        print("B")
class A(B):
    def __func(self):
        print("A")
    def func1(self):
        self.__func()
        A.__func(self)
    def func2(self):
        self.__f1()
a1 = A()
# a1.__func()#会报错,类外部不能访问私有方法
a1.func1()  # 类的内部可以访问
a1.func2()  # 会报错,类的派生类也不能访问

class Dome:
    def __init__(self, name, life=100):
        self.name = name
        self.__life = life  # 私有属性,外面不可见,只有在类里
    def talk(self):
        print('%s:say hello' % self.name)
    def life_show(self):  # 在类里将私有属性设置后外面就可以   调用了
        self.__life -= 20
        print('name:%s  life:%s' % (self.name, self.__life))
    def sleep(self):
        print('we are sleep')
    def __shopping(self):  # 私有方法外面调用不了
        print('go shoping...')
f1 = Dome('zou')
f1.talk()
f2 = Dome('jack', 80)
f2.sleep()
print(f1.name)  # print(f1.__life)已经成私有属性了,直接访问不了
f1.life_show()
f2.life_show()
# f1.__shopping()用不了,成了私有方法了

结果:

zou:say hello
we are sleep
zou
name:zou  life:80
name:jack  life:60

相关文章
|
6月前
|
Python
python封装执行cmd命令的方法
python封装执行cmd命令的方法
81 0
|
6月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
145 0
|
6月前
|
Python
请简述Python中的继承、封装和多态的概念。
【2月更文挑战第24天】【2月更文挑战第82篇】请简述Python中的继承、封装和多态的概念。
42 1
|
2月前
|
Python
用python转移小文件到指定目录并压缩,脚本封装
这篇文章介绍了如何使用Python脚本将大量小文件转移到指定目录,并在达到大约250MB时进行压缩。
36 2
|
2月前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
3月前
|
数据安全/隐私保护 开发者 Python
在 Python 中定义封装?
【8月更文挑战第29天】
28 8
|
2月前
|
Linux Python
linux 封装 python
linux 封装 python
15 0
|
2月前
|
Linux Python
Linux 下封装 Python
Linux 下封装 Python
16 0
|
3月前
|
Docker Python 容器
[docker]封装python的docker镜像
[docker]封装python的docker镜像
|
5月前
|
Python
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态