zoukankan      html  css  js  c++  java
  • 93.修改私有属性的值

    修改私有属性的值

    • 如果需要修改一个对象的属性值,通常有2种方法

      1. 对象名.属性名 = 数据 ----> 直接修改
      2. 对象名.方法名() ----> 间接修改
    • 私有属性不能直接访问,所以无法通过第一种方式修改,一般的通过第二种方式修改私有属性的值:定义一个可以调用的公有方法,在这个公有方法内访问修改。

    class Master(object):
        def __init__(self):
            self.kongfu = "古法煎饼果子配方" 
        def make_cake(self):          
            print("[古法] 按照 <%s> 制作了一份煎饼果子..." % self.kongfu)
    
    class School(object):
        def __init__(self):
            self.kongfu = "现代煎饼果子配方"
    
        def make_cake(self):
            print("[现代] 按照 <%s> 制作了一份煎饼果子..." % self.kongfu)
    
    class Prentice(School, Master):
        def __init__(self):
            self.kongfu = "猫氏煎饼果子配方"
            # 私有属性,可以在类内部通过self调用,但不能通过对象访问
            self.__money = 10000  
    
    
        # 现代软件开发中,通常会定义get_xxx()方法和set_xxx()方法来获取和修改私有属性值。
    
        # 返回私有属性的值
        def get_money(self):
            return self.__money
    
        # 接收参数,修改私有属性的值
        def set_money(self, num):
            self.__money = num
    
    
        def make_cake(self):
            self.__init__()
            print("[猫氏] 按照 <%s> 制作了一份煎饼果子..." % self.kongfu)
    
        def make_old_cake(self):
            Master.__init__(self) 
            Master.make_cake(self)
    
        def make_new_cake(self):
            School.__init__(self) 
            School.make_cake(self)
    
    class PrenticePrentice(Prentice):
        pass
    
    
    damao = Prentice()
    # 对象不能访问私有权限的属性和方法
    # print(damao.__money)
    # damao.__print_info()
    
    # 可以通过访问公有方法set_money()来修改私有属性的值
    damao.set_money(100)
    
    # 可以通过访问公有方法get_money()来获取私有属性的值
    print(damao.get_money())

    例子1:

    # 01: 案例
    # 自定义人类
    class Person(object):
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
            self.__money = 10000
    
        # 定义一个公有的方法
        # 取值
        def get_money(self):
            return self.__money
    
        # 定义一个公有的方法
        def set_money(self, new_money):
            self.__money = new_money
    
    # 小明
    xm = Person("小明", 20)
    print(xm.name)
    print(xm.age)
    # print(xm.money)
    # 在某个属性被私有后 还想再类的外部使用对象对他进行访问(取值 赋值)
    # 解决方案: 通过间接的方式对其进行访问
    
    # 获取私有属性的值
    print(xm.get_money())
    
    # 修改私有属性的值
    xm.set_money(1000)
    print(xm.get_money())

    例子2:

    # 02: 常用
    # 自定义人类
    class Person(object):
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
            self.__money = 10000
    
        # 定义一个公有的方法
        # 取值
        def get_money(self):
            return self.__money
  • 相关阅读:
    ajax
    文件下载--getOutputStream输出二进制字符
    文件上传功能实现代码
    java动态生成验证码
    项目中用到的jar包简介(2)
    python字符串的常见操作
    python切片使用方法(超详细)
    for循环结合range使用方法
    python使用while循环实现九九乘法表
    石家庄云修科技有限公司
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12873543.html
Copyright © 2011-2022 走看看