类继承Python的问题

2024-06-23 19:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python相当陌生,在继承类方面遇到了问题。这是一个计算机编程课程的在线介绍,我没有资源来找出我的代码哪里出了问题。代码如下:

class Employee:
    def __init__(self, employeeName, employeeShift):
        self.__name = employeeName
        self.__number = employeeShift

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

    def set__number(self, num):
        self.__number = num

    # Accessor methods
    def get_name(self):
        return self.__name

    def get_number(self):
        return self.__number

# ProductionWorker class that inherited the Employee class
class ProductionWorker(Employee):
    def __init__(self, shift, payRate):
        self.__shift_number = shift
        self.__pay_rate = payRate

    def set_shift_number(self, shift):
        self.__shift_number = shift

    def set_pay_rate(self, pay):
        self.__pay_rate = pay

    # Accessor methods
    def get_shift(self):
        return self.__shift

    def get_shift(self):
        if self.__shift_number = '1':
            s = 'Day shift'
        else self.__shift_number = '2':
            s = 'Night shift'
        return s 

    def get_pay(self):
        return self.__pay

    def get_pay(self):
        if self.__pay_rate <= 5:
            p = 7.50
        elif self.__pay_rate > 5 and self.__pay_rate <= 15:
            p = 13.50
        else self.__pay_rate >= 20:
            p = 20
        return p

# main module
def main():
    # Prompts the user for employee name, shift and pay rate
    employeeName = raw_input("Please enter the employee name: ")
    print "Please enter which shift the employee works."
    employeeShift = input("1 for day shift, 2 for night shift: ")
    payRate = input("How long has the employee worked here? ")

    # Creates object of ProductionWorker
    worker = ProductionWorker(employeeName, employeeShift, payRate)

    # Displays information
    print "Employee name:", worker.get_name()
    print "Employee shift:", worker.get_shift()
    print "Employee pay rate:", worker.get_pay_rate()

# calls main module
main()

它告诉我在ProductionWorker类中有一个语法错误,在def get_shift()下,这里有{}。我以我的教授为榜样,所以我不太明白这个错误。在


Tags: thenameselfnumbergetreturnshiftrate
3条回答

Python使用==进行比较测试:

if self.__shift_number == '1':

=如果用于变量赋值。在


编辑:

你实际上还有一些问题。在我开始之前,这里有一个你的脚本的固定版本:

^{pr2}$

下面是我所做的:

  1. 将所有的else替换为elif(因为else不支持条件)。

  2. 除了__init__中的那些,我删除了每个双下划线。这是因为双下划线在Python中有着特殊的含义。

  3. name添加了一个name参数(因为您在此行中传入了一个名称:worker = ProductionWorker(employeeName, employeeShift, payRate))。

  4. 就在ProductionWorker.__init__声明的下面,我添加了这一行来给ProductionWorker一个name属性:self.name = name

除了@iCodez指出的bug之外,您还没有定义self.__shift是什么,因此{}在调用它时会引发一个错误。在

您还没有定义self.__pay是什么,所以get_pay()将抛出一个NameError。在

我假设您指的是分别返回self.__shift_number和{}的方法。在

哈哈,实际上现在我仔细看了一下,你对那些方法进行了双重定义,所以你立即用更正确的代码覆盖你的错误代码。我建议你删除你的错误代码。在

在get_shift函数中应该使用'==',而不是'='。在

  • =是赋值运算符

  • ==是比较运算符

更正代码:


def get_shift(self):
    if self.__shift_number == '1':
        s = 'Day shift'
    elif self.__shift_number == '2':
        s = 'Night shift'
    return s 

相关问题 更多 >

    热门问题