2

私の呼び出し 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)
4

3 に答える 3

2

()メソッドの最後に行方不明です。

出力は正しいです。my_triangle.check_angles関数自体を返すため、取得するテキストはその関数の説明です。実際に結果を印刷するには、単にprint my_triangle.check_angles().

PS。浮動小数点数には注意してください。整数以外のものを使用するとすぐに、合計が正確に にならない場合があります180。それに近い数値になります。整数以外のものが必要な場合は、abs(result-180) < 1e-6(または比較する他の小さな数)の方が適切です。

于 2013-05-11T18:58:45.170 に答える
2

関数を呼び出すには、括弧を追加する必要があります。行う。

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__

于 2013-05-11T18:59:01.460 に答える
1

まず、メソッド呼び出しの括弧がありません。

次に、selfクラス内の任意のメソッドにパラメーターとして提供する必要があります。

def check_angles(self):

angle1また、 、angle2、またはを使用したくない場合は、適切なスコープで使用する前に、angle3それらを先頭に追加する必要があります。self.

最後に、スタイルについて: はself.angle1 + self.angle2 + self.angle3 == 180ブール値なので、単に返すことができます。

于 2013-05-11T19:00:52.160 に答える