簡體   English   中英

AttributeError:“學生”object 沒有屬性“calculateGrade”

[英]AttributeError: 'Student' object has no attribute 'calculateGrade'

class Student:
    def __init__(self, name, id, standard, phyMarks, chemMarks, mathsMarks):
        self.name = name 
        self.id = id
        self.standard = standard
        self.phyMarks = phyMarks
        self.chemMarks = chemMarks
        self.mathsMarks = mathsMarks

        def calculateGrade(Student):
            if self.phyMarks + self.chemMarks + self.mathsMarks >= 250:
                return "A"
            elif self.phyMarks + self.chemMarks + self.mathsMarks >= 150:
                return "B" 
            else:
                return "C"
        
        def  haspassed(Student): 
            if calculateGrade() == "C":
                return "Failed"
            else:
                return "Passed" 



Raghav = Student("Raghav", 1, 9, 23, 56, 10)
Madhav = Student("Madhav", 2, 9, 98, 79, 83)
Hemant = Student("Hemant", 3, 9, 99, 100, 100)
Harish = Student("Harish", 4, 9, 89, 72, 68)
Raunak = Student("Raunak", 5, 9, 100, 100, 100)

print("Student with name" , Raghav.name, Raghav.id, "has scored grade", Raghav.calculateGrade(), ".", "So his pass status is , ", Raghav.hasPassed())
print("Student with name" , Madhav.name, Madhav.id, "has scored grade", Madhav.calculateGrade(), ".", "So his pass status is , ", Madhav.hasPassed())
print("Student with name" , Raunak.name, Raunak.id, "has scored grade", Raunak.calculateGrade(), ".", "So his pass status is , ", Raunak.hasPassed())

我沒有在 print 語句中獲得 calculateGrade 和 hasPassed 屬性。 請幫忙,因為我有這個作業。 給定的問題是 - 創建一個 class 與 python 命名的學生給屬性稱為名稱,id,標准,physicsMarks,chemistryMarks,mathsMarks 定義 2 方法 calculateGrade() 和 hasPassed() 如果標記> = 250 - > A 如果標記> = 150 - > B 否則 C 如果學生有 C 成績他不及格,否則通過創建至少 5 個實例打印(“有名字的學生”,shubham.name 和 id:,shubham.id 得分所以他的成績 shubham.calculateGrade()狀態是shubham,hasPassed())

有兩點需要考慮。 縮進和“自我”。

class Student:
    def __init__(self, name, id, standard, phyMarks, chemMarks, mathsMarks):
        # do something

        def calculateGrade(Student):
           # do something

        def  haspassed(Student):
           # do something

因為calculateGrade()haspassed()縮進太遠,它成為__init__()的一部分

盡管在 class 函數中使用Student作為第一個參數會起作用,但使用標准self被認為是最佳實踐。

您的代碼應該看起來更像這樣:

class Student:
    def __init__(self, name, id, standard, phyMarks, chemMarks, mathsMarks):
        # do something

    def calculateGrade(self):
        # do something

    def haspassed(self):
        # do something

編輯添加:

另外,也許再看看這個問題。 不是為你做功課,而是鼓勵你思考各種選擇。

...如果學生有 C 成績,他不及格,否則通過。

...所以他的通行證狀態是 shubham.hasPassed()

這聽起來像是一個真/假的情況。 如果有人想多次調用來檢查通過/失敗狀態,他們需要每次運行calculateGrades() function,這是額外的處理。 在 class 中記錄結果是否有意義? 只是思考的食物。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM