Python2.7简介。到类:“module”对象不可调用

2024-10-03 06:30:37 发布

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

我得到了一份学校作业,它是面向对象编程的入门。我很快就要解决这个问题了,只是在语法上有点问题。也许你们中的一些人知道问题出在哪里?在

我的课在这里:

class CashRegister():
    __taxRate = 0
    __numProductsSold = 0
    __totalRevenue = 0.0
    __taxAmount = 0.0
    __soldProducts = []

    def __init__(self, taxRate):
        self.__taxRate = taxRate

    def getNumProductsSold(self):
        return self.__numProductsSold

    def getTotalRevenue(self):
        return self.__totalRevenue

    def getTaxAmount(self):
        return self.__taxAmount

    def getSoldProducts(self):
        return self.__soldProducts

    def addItem(self, product, price):
        self.__numProductsSold +=1
        self.__totalRevenue += price
        self.__taxAmount += price * self.__taxRate
        self.__soldProducts.append(product)

我试着称之为:

^{pr2}$

有人发现问题了吗? 正在获取标题所示的错误消息。在


Tags: selfreturndef作业语法productprice学校
3条回答

您需要告诉您的程序要使用CashRegister中的哪些方法,因此有几个选项:

option 1

import CashRegister

def main():
    testRegister = CashRegister.CashRegister(22)
    testProduct = "Mat"
    testRegister.addItem(testProduct, 23.99)
    print testRegister.getTotalRevenue ()

if __name__ == '__main__':
    main();

在选项1中,您告诉解释器不要混淆您要调用的CashRegister方法是CashRegister类中的方法。在

option 2

^{pr2}$

在选项2中,您告诉解释器您只从类中导入CashRegister的构造函数,当您在代码中调用CashRegister时,应该假设这一点。在

还有另一个选项在这个应用程序中是不必要的,但仍然有效。当一个类中有很多方法时会更好。这是一个选择。在

option 3

from CashRegister import *

def main():
    testRegister = CashRegister(22)
    testProduct = "Mat"
    testRegister.addItem(testProduct, 23.99)
    print testRegister.getTotalRevenue ()

if __name__ == '__main__':
    main();

在选项3中,您告诉编译器,您希望将类中的所有方法的引入程序范围,而不需要指定所属的类。在

Python不根据模块的名称来假设类的名称,它允许一个模块保存多个类。您需要显式导入类或将它们作为模块对象的成员引用。按照惯例,模块名是小写,类名以大写字母开头。例如:

# mymodule.py

class ClassOne(object):
    pass

class ClassTwo(object):
    pass

在另一个文件中:

^{pr2}$

或者

import mymodule
one = mymodule.ClassOne()

导入的“cashrister”模块中的“cashrister”类被访问为CashRegister.CashRegister。在

相关问题 更多 >