Python OOP如何从另一个类获取私有属性

pbpqsu0x  于 2023-06-04  发布在  Python
关注(0)|答案(2)|浏览(163)

我正在进行Python OOP测试,但我无法解决这个问题。所以类初始化器已经写好了。你不能改变这一点。在Employee类中,def set_salary必须有两个参数:bonus和base_pay也在Employee类def get_salary中,必须返回bonus和base_pay之和。我不知道如何获得私有示例。

class Salary:

    def __init__(self, base_pay=0, bonus=0):
        self.__base_pay = base_pay
        self.__bonus = bonus

    def set_bonus(self, y):
        self.__bonus = y

    def get_bonus(self):
        return self.__bonus

    def set_base_pay(self, y):
        self.__base_pay = y

    def get_base_pay(self):
        return self.__base_pay

    # Write methods Salary class here

class Employee:
    
    def __init__(self, name='', base_pay=0, bonus=0):
        self.__name = name 
        self.__salary = Salary(base_pay, bonus)

    def set_name(self, x):
        self.__name = x

    def get_name(self):
        return self.__name

    def set_salary(self, bonus, base_pay):
        self.__salary  = self.__salary(bonus) + self.__salary(base_pay)

    def get_salary(self):
        return self.__salary

    # Write methods for Employee class here

我试着解决它,但没有线索。希望你能帮助我,让我明白,并可以使用它以后。谢谢!

xtfmy6hx

xtfmy6hx1#

您的set_salary方法肯定应该如下所示

def set_salary(self, bonus, base_pay):
    self.__salary.set_bonus(bonus)
    self.__salary.set_base_pay(base_pay)

显然get_salary“必须返回bonus和base_pay的总和”可以返回它们的总和…

def get_salary(self):
    return self.__salary.get_base_pay() + self.__salary.get_bonus()

使用Salary类(您将其示例存储在self.__salary中)提供的getter/setter方法。
顺便说一下,getter和setter在Python中很奇怪。尽管它们可能在Java/C#等典型的OOP语言中很典型,但在Python中,我们肯定更愿意直接使用@property或字段。

8ehkhllq

8ehkhllq2#

创建Proper方法来访问私有变量,并在子类中调用它们,然后求和

相关问题