Python:理解inheritan

2024-04-25 21:50:47 发布

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

我是Python新手,正在探索类和对象。 我创建了一个类,在其中定义了几个函数。然后我创建了另一个类,并试图从第一个类继承,但出现了一些错误。 错误:类别CTC(工资): 名称错误:未定义名称“Salary”

基类:

class Salary:

    monthly=0.00
    name = ""

    def __init__(self,name,monthly):
        self.name = name
        self.monthly = monthly


    def display(self):
        print("name: ", self.name,  "Monthly Salary: ", self.monthly)

派生类:

class CTC(Salary):

    tax=0.00
    ctc=0.00
    def __init__(self,name,monthly,tax):
        Salary.__init__(self,name,monthly)
        self.tax = tax


    def calculateCTC(self):
         yearly = monthly*12
         totalTax= tax *12
         ctc = yearly - totalTax
         print("Total CTC: ", self.ctc)

         obj = CTC("Rishi",28700.00,1295.00)
         obj.display(self)

谁能给我解释一下错误的根本原因吗?你知道吗


Tags: nameself名称initdef错误displayclass
3条回答

与Java不同,Java强制开发人员将每个class放在每个文件中,Python更灵活。在Python中,您可以在一个文件中编写任意多的代码,这意味着您可以将两个class都放在一个文件中,而无需import任何操作。这种差别是存在的。Java不需要您import任何项目文件,而Python则要求您import外部包中的任何内容,无论它们存放在哪里。所以只需将Salary导入带有CTC的文件。你知道吗

我把所有的代码放在一个文件中(稍加修改),它就可以在我身上运行了。你知道吗

class Salary:

    def __init__(self, name, monthly):
        self.name = name
        self.monthly = monthly

    def display(self):
        print("name: ", self.name,  "Monthly Salary: ", self.monthly)


class CTC(Salary):

    def __init__(self, name, monthly, tax):
        Salary.__init__(self, name, monthly)
        self.tax = tax
        self.ctc = 0.00 # create with default value

    def calculateCTC(self):
        yearly = self.monthly*12 # with `self`
        totalTax = self.tax*12 # with `self`
        self.ctc = yearly - totalTax # with `self`
        print("Total CTC: ", self.ctc)

# without indentation
obj = CTC("Rishi", 28700.00, 1295.00)
obj.display() # without `self`

如果你需要分开的文件

你知道吗工资.py你知道吗

class Salary:

    def __init__(self, name, monthly):
        self.name = name
        self.monthly = monthly

    def display(self):
        print("name: ", self.name,  "Monthly Salary: ", self.monthly)

你知道吗主.py你知道吗

from salary import Salary

class CTC(Salary):

    def __init__(self, name, monthly, tax):
        Salary.__init__(self, name, monthly)
        self.tax = tax
        self.ctc = 0.00

    def calculateCTC(self):
        yearly = self.monthly*12 # with `self`
        totalTax = self.tax*12 # with `self`
        self.ctc = yearly - totalTax # with `self`
        print("Total CTC: ", self.ctc)

# without indentation
obj = CTC("Rishi", 28700.00, 1295.00)
obj.display() # without `self`

我格式化了你的代码,它对我有用。你知道吗

class Salary:

    monthly=0.00
    name = ""

    def __init__(self,name,monthly):
        self.name = name
        self.monthly = monthly


    def display(self):
        print("name: ", self.name,  "Monthly Salary: ", self.monthly)


class CTC(Salary):

     tax=0.00
     ctc=0.00
     def __init__(self,name,monthly,tax):
         Salary.__init__(self,name,monthly)
         self.tax = tax


     def calculateCTC(self):
         yearly = monthly*12
         totalTax= tax *12
         ctc = yearly - totalTax
         print("Total CTC: ", self.ctc)

         obj = CTC("Rishi",28700.00,1295.00)
         obj.display(self)

相关问题 更多 >