[英]AttributeError Problem with Multiple inheritance in python
我想計算 python 中具有多重繼承的學生的總分和平均分。 但是,每當我為我的孩子 class 創建一個 object 時,它讓我可以訪問父類的所有方法,但是當我調用孩子 class 的方法時會顯示 AttributeError。 我嘗試使用 super() function 但結果是一樣的。
我只是在下面粘貼我的代碼。 你能建議我解決這個問題嗎?
class Student_Marks:
def __init__(self):
# initializing variables
self.__roll: int
self.__marks1: int
self.__marks2: int
def getMarks(self):
self.__roll = int(input("Enter Roll No: "))
self.__marks1, self.__marks2 = map(int, input("Enter Marks: ").split())
return self.__roll, self.__marks1, self.__marks2
class Cocurricular_Marks:
def __init__(self):
self.__activemarks: int
def getActiveMarks(self):
self.__activemarks = int(input("Enter Co Curricular Activities Marks: "))
return self.__activemarks
class Result(Student_Marks, Cocurricular_Marks):
def __init__(self):
super().getMarks()
super().getActiveMarks()
def display(self):
total = self.__marks1 + self.__marks2 + self.__activemarks
avg = total / 3
print("Roll No: ", self.__roll)
print("Total Marks: ", total)
print("Average Marks: ", avg )
# creating Objects
res = Result()
res.getMarks()
res.getActiveMarks()
res.display() # I got problem here
您在類中為屬性添加兩個下划線,這會破壞屬性的名稱(請參閱Private Variables上的文檔)。
例如,當您退出 getMarks 時, Student_Marks
的__roll
將被_Student_Marks__roll
為getMarks
。
因此Result.display()
無法訪問self.__marks1
,但它可以作為self._Student_Marks__marks1
訪問它。
請參閱以下最小示例。
class K:
__a = 1
class KK(K):
pass
k = K()
k.__a # AttributeError: 'K' object has no attribute '__a'
k._K__a # 1
kk = KK()
kk._K__a # 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.