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'
uj5u.com熱心網友回復:
您需要super().__init__在__init__子類的方法中執行方法。
object.__init__
在實體創建之后(由 __new__())呼叫,但在它回傳給呼叫者之前。引數是傳遞給類建構式運算式的引數。如果基類具有 __init__() 方法,則派生類的 __init__() 方法(如果有)必須顯式呼叫它以確保正確初始化實體的基類部分;例如:
super().__init__([args...])。
像這樣:
class A:
def __init__(self, a):
self.a = a
def print_a(self):
print(self.a)
class B(A):
def __init__(self, a, b):
self.b = b
super().__init__(a)
B(1, 2).print_a()
# 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407833.html
標籤:
下一篇:使用繼承的抽象方法的問題
