zoukankan      html  css  js  c++  java
  • python_面向对象——封装

    1.私有属性

    class Person(object):
        def __init__(self,name,age):
            self.name = name
            self.age = age  #实例属性
            self.attack_val = 30
            self.__life_val = 100   #前面加两个下划线就是私有变量,私有属性
    
    
    a = Person('wdc',22)
    print(a.age)    #实例属性可以直接外面使用和修改
    print(a.__life_val) #私有属性外面不可以使用和修改

     2.私有属性的用法

    class Person(object):
        def __init__(self,name,age):
            self.name = name
            self.age = age  #实例属性
            self.attack_val = 30
            self.__life_val = 100   #前面加两个下划线就是私有变量,私有属性
        def get_life_val(self):
            print(self.__life_val)  #可以在类的内部用方法调用
            return self.__life_val  #也可以在类的内部用方法返回属性的值
    
        def got_life_val(self): #只能通过内部方法修改私有属性的值
            self.__life_val = self.__life_val - 20
    
    
    a = Person('wdc',22)
    b = a.get_life_val()    #调用私有属性的方法,并接收返回值
    print(b)
    a.got_life_val()    #执行内部方法修改私有属性
    b = a.get_life_val()    #调用私有属性的方法,并接收返回值

    3.对方法的封装

    class Person(object):
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def __breath(self): #将方法封装
            print('{}在呼吸'.format(self.name))
    
        def attack(self):
            self.__breath() #只能通过内部的其他方法去调用私有方法
    
    a = Person('wdc',22)
    a.attack()  

     4.如果非要在外部访问或者修改私有属性或者方法可以使用:实例名._类名+方法名()

    class Person(object):
        def __init__(self,name,age):
            self.name = name
            self.age = age
            self.__life_val = 100
    
        def __breath(self): #将方法封装
            print('{}在呼吸'.format(self.name))
    
        def attack(self):
            self.__breath() #只能通过内部的其他方法去调用私有方法
        def get_life_val(self):
            print(self.__life_val)
    
    a = Person('wdc',22)
    a.attack()
    # 实例名._类名+方法名()
    a._Person__breath() #调用私有方法
    a._Person__life_val = 10    #修改私有属性
    a.get_life_val()

       注意:实例创建完成后,在外面创建不了私有属性。即使在外面使用a.__wdc = 123创建了属性__wdc,这个属性也不具备私有性质。

  • 相关阅读:
    monit安装配置
    php新加扩展模块
    centos6.5(64bit),python2.6.6安装MySQLdb模块
    esxi导出ovf模板注意事项
    gateone安装使用
    centos7上安装nagios及增加监控服务器
    zabbix自动发现主机并加入组绑定模板
    zabbix监控Windows-server
    zabbix设置中文并解决乱码问题
    centos7安装zabbix客户端并监控
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11895539.html
Copyright © 2011-2022 走看看