簡體   English   中英

初學者python:我對check_angles的調用有什么問題? (或者就是方法本身)

[英]Beginner python: what's wrong with my call to check_angles? (or the method itself, if it's that)

我的電話check_angles返回以下內容而不是True:

<bound method Triangle.check_angles of <Triangle object at 0x7fb209a66b50>>

這是代碼:

class Triangle(object):
    number_of_sides = 3
    def __init__(self, angle1, angle2, angle3):
        self.angle1 = angle1
        self.angle2 = angle2
        self.angle3 = angle3
    def check_angles():
        if angle1 + angle2 + angle3 == 180:
            return True
        else:
            return False

my_triangle = Triangle(60, 60, 60)

(print my_triangle.number_of_sides)
(print my_triangle.check_angles)

方法的末尾缺少()

輸出正確: my_triangle.check_angles返回函數本身,因此您獲得的文本就是該函數的描述。 要實際打印結果,只需print my_triangle.check_angles()

PS。 請當心浮點數。 使用整數以外的值時,總和可能不完全是180 這將是一個非常接近的數字。 如果您需要除整數以外的任何內容,那么abs(result-180) < 1e-6 (或其他要比較的小數字)會更好。

您必須添加括號才能調用該函數。 做。

class Triangle(object):
    number_of_sides = 3
    def __init__(self, angle1, angle2, angle3):
        self.angle1 = angle1
        self.angle2 = angle2
        self.angle3 = angle3
    def check_angles(self):
        if self.angle1 + self.angle2 + self.angle3 == 180:
            return True
        else:
            return False

my_triangle = Triangle(60, 60, 60)

print my_triangle.number_of_sides
print my_triangle.check_angles()

您的實現有一些小問題,因為您沒有在函數中傳遞self ,而沒有執行self.angle1等等。 另外,將number_of_sides放入__init__可能很有用。

首先,您缺少方法調用的括號。

接下來,您必須將self作為參數提供給類中的任何方法。

def check_angles(self):

另外,您也不想使用angle1angle2angle3您需要在self.添加前綴self. 您才能在適當的范圍內使用它們。

最后,是一種樣式:您可以返回self.angle1 + self.angle2 + self.angle3 == 180 ,因為它是布爾值。

暫無
暫無

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

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