如何定义并调用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个核心问题,以下是修正方案:
问题点与修正说明
- 实例方法缺少
self参数:类的实例方法必须以self作为第一个参数,才能访问实例的属性 - 属性访问错误:方法内要通过
self.salesman访问实例属性,不能直接写salesman - 方法调用方式错误:实例方法需通过具体实例调用,而非直接通过类传参;同时代码存在
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
相关产品推荐
相关产品推荐

