首页 > 解决方案 > 类对象未按预期工作。我需要向类对象添加参数吗?

问题描述

我正试图围绕 Python 类。我的脚本试图创建一个类来确定佣金支付、税前和税后。课前课是税前课,但我遇到了税后课。

class Commission():
    def __init__(self, call, permit, install):
        self.call = call
        self.permit = permit
        self.install = install
    
    def pay_pre_tax(self):
        calls = 300
        permits = 200
        installs = 500
        total = calls * self.call + permits * self.permit + installs + self.install
        return total

    def taxes(self):
        tax_rate = 4.66 / total
        return tax_rate

    def total_pay(self):
        total = self.pay_pre_tax()
        total_pay = total + tax_rate
        return total_pay

Pynchon = Commission(1, 2, 3)

print(Pynchon.pay_pre_tax())
Pynchon.taxes()
print(Pynchon.total_pay())

我收到“Pynchon.taxes()”错误-->“NameError: name 'total' is not defined”和“NameError: name 'tax_rate' is not defined”

我是否必须以某种方式将总数添加到委员会中的论点才能正常工作?

标签: pythonclassobject

解决方案


问题是您在方法中创建的所有变量(即总计、税率等)不属于该对象,但其范围仅限于初始化它的方法。以下代码可能正常工作:

class Commission:
    def __init__(self, call, permit, install):
        self.call = call
        self.permit = permit
        self.install = install
    
    def pay_pre_tax(self):
        calls = 300
        permits = 200
        installs = 500
        self.total = calls * self.call + permits * self.permit + installs + self.install
        return self.total

    def taxes(self):
        self.tax_rate = 4.66 / self.total
        return self.tax_rate

    def total_pay(self):
        total = self.pay_pre_tax()
        total_pay = total + self.tax_rate
        return total_pay

Pynchon = Commission(1, 2, 3)

print(Pynchon.pay_pre_tax())
Pynchon.taxes()
print(Pynchon.total_pay())

推荐阅读