zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    kubernetes 中遇见的一些坑(持续更新)
    Docker网络解决方案-Flannel部署记录
    理解Docker :Docker 网络
    全面剖析Redis Cluster原理和应用
    python发送钉钉机器人脚本
    centos 7 部署LDAP服务
    zabbix 同步ldap帐号脚本
    zabbix TCP 连接数监控
    WebDriver基本操作入门及UI自动化练手页面
    Jmeter使用入门
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/13021872.html
Copyright © 2011-2022 走看看