zoukankan      html  css  js  c++  java
  • Python3学习之路~6.5 私有属性和私有方法

    属性分为静态属性和动态属性,静态属性就是变量,动态属性就是方法。但是一般我们说的属性就是变量,方法就是方法。
    私有属性/方法就是外面访问不了,只有自己能够访问的属性/方法。
    如何将属性和方法分别变成私有属性和私有方法?就是在属性名或方法名前面加“__”(两个下划线)即可。

    #Author:Zheng Na
    
    class Role:
    
        def __init__(self,name,role,weapon,life_value=100,money=15000):
            self.name = name
            self.role = role
            self.weapon = weapon
            self.__life_value = life_value # 私有属性:将这个变量隐藏了
            self.money = money
    
        def show_status(self):
            print("name:%s role:%s weapon:%s life_value:%s" %(self.name,self.role,self.weapon,self.__life_value))
    
        def __buy_gun(self,gun_name): # 私有方法
            print("%s just bought %s" %(self.name,gun_name))
    
        def got_shot(self):
            self.__life_value -=50
            print("ah...I got shot...")
    
    r1 = Role("Alex","Policeman","AK47")
    # print(r1.__life_value) #私有属性外面访问不了,报错:AttributeError: 'Role' object has no attribute '__life_value'
    # r1.__buy_gun("AK47") #私有方法外面访问不了,报错:AttributeError: 'Role' object has no attribute '__buy_gun'
    r1.got_shot() ##私有属性外面访问不了,但是里面可以改
    # 如果你要查看一下这个属性的值,可以定义一个方法
    r1.show_status() # name:Alex role:Policeman weapon:AK47 life_value:50
    

      

  • 相关阅读:
    你爱的不爱你,转身是幸福
    按字节长度截取字符串(支持截取带HTML代码样式的字符串)
    存储过程操作类
    C# 拖动控件
    文件同步类
    c# 动态改变控件大小的方法
    虚拟世界改变现实 盛大兴建永恒之塔
    c#百钱买百鸡
    序列化类
    DLL专题之MFC规则库和扩展库
  • 原文地址:https://www.cnblogs.com/zhengna/p/9599969.html
Copyright © 2011-2022 走看看