You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义并调用Python对象?Salesman类bonus方法报错修复

问题1:如何定义并调用Python对象?

定义Python对象(类)

  • 用class关键字声明类,类名遵循大驼峰命名规则
  • 类中通过__init__方法作为构造函数,初始化对象属性,该方法第一个参数必须为self(代表实例本身)
  • 类内自定义方法时,第一个参数同样需要是self,用于访问实例属性

示例代码:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def say_hello(self):
        print(f"Hello, I'm {self.name}, {self.age} years old.")

调用(实例化)Python对象

  • 通过类名(参数)创建实例,参数对应__init__方法中除self外的参数
  • 访问实例属性用实例名.属性名,调用实例方法用实例名.方法名()

示例代码:

# 创建实例
alice = Person("Alice", 28)
# 访问属性
print(alice.name)
# 调用方法
alice.say_hello()
问题2:修复Salesman类的bonus方法

你的代码存在3个核心问题,以下是修正方案:

问题点与修正说明

  1. 实例方法缺少self参数:类的实例方法必须以self作为第一个参数,才能访问实例的属性
  2. 属性访问错误:方法内要通过self.salesman访问实例属性,不能直接写salesman
  3. 方法调用方式错误:实例方法需通过具体实例调用,而非直接通过类传参;同时代码存在print()salesman1_bonus的语法错误

修正后的完整代码

class Salesman:
    def __init__ (self, salesman, sales_id, years_worked):
        self.salesman = salesman  
        self.sales_id = sales_id
        self.years_worked = years_worked
    def __str__(self):
        print_me =  '\nSalesman: ' + str(self.salesman)
        print_me += '\nSales ID: ' + str(self.sales_id)
        print_me += '\nAnniversary: ' + str(self.years_worked) + " years"
        return print_me
    def bonus(self):
        # 通过self访问实例属性
        bonus_str = "$" * self.years_worked
        print(self.salesman, 'earned ', bonus_str, 'so far this year!')

def main():
    print("\nWe would like to Congratulate the following Employees", end = " ")
    print("who have hit their workiversary")
    salesman1 = Salesman("Frank", 1234, 10)
    salesman2 = Salesman("Justin", 5678, 5)
    print(salesman1)
    print(salesman2)
    print()
    # 通过实例调用bonus方法,无需额外传参
    salesman1.bonus()
    salesman2.bonus()

main()

内容的提问来源于stack exchange,提问作者User1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:13:21