【发布时间】:2022-01-08 04:52:34
【问题描述】:
class Salary:
def __init__(self, basic_salary_table):
self.basic_salary_table = basic_salary_table
pass
def basic_salary(self):
if self.grade == 0:
if self.level > 50:
return int(self.basic_salary_table[3][self.basic_salary_table[3]['level']==50]['basic_salary'])
return int(self.basic_salary_table[3][self.basic_salary_table[3]['level']==self.level]['basic_salary'])
else:
self.grade = str(self.grade)+'grade'
return int(self.basic_salary_table[0][self.basic_salary_table[0]['level']==self.level][self.grade])
class Person(Salary):
def __init__(self, name, id, job, level, grade=0):
self.name = name
self.id = id
self.job = job
self.level = level
self.grade = grade
当我将 Person 对象创建为 person1 时,然后调用 person1.basic_salary() 解释器说,“Person”对象没有“basic_salary_table”属性
【问题讨论】:
-
你还没有从
Person.__init__调用Salary__init__(),所以Salary.__init__定义的任何东西当然都没有在你的Person实例上定义。 -
我不知道怎么做,因为你没有将
basic_salary_table传递给Person构造函数。那应该从哪里来?是全球性的吗? -
一般来说,你会将它传递给
Person构造函数,但它也可以是一个全局变量。 -
不过,您的继承有点奇怪;一个人通常不被视为薪水。
-
你的意思是,我应该为 Person 的每个对象包含
basic_salary_table,对吧?
标签: python class inheritance init