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
原文地址:https://www.cnblogs.com/kangwenju/p/12873543.html