Python Ошибка при использовании созданного класса в другой функции - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь создать функцию для поиска силы net, когда мне дан список сил (для которых я создал класс), и у меня возникает ошибка, когда я пытаюсь перебрать список и использовать другой метод класса Force. Может кто-нибудь помочь, пожалуйста? Спасибо!

Сам код:

from math import atan2, degrees, radians, sin, cos
class Force:
    def __init__(self, magnitude, angle, use_degrees=True):
        self.set_magnitude(magnitude)
        self.set_angle(angle)
        self.set_system(use_degrees)
    def set_magnitude(self, magnitude):
        self.magnitude=magnitude
    def set_angle(self, angle):
        self.angle=angle
    def set_system(self, use_degrees):
        self.use_degrees=use_degrees
    def get_horizontal(self):
        return float(self.magnitude*cos(radians(self.angle)))
    def get_vertical(self):
        return float(self.magnitude*sin(radians(self.angle)))
    def get_angle(self, use_degrees=True):
        if use_degrees==True:
            return self.angle
        return radians(self.angle)
def find_net_force(list_of_instances):
    net_force_magnitudeH=0
    net_force_magnitudeV=0
    for instance in list_of_instances:
        net_force_magnitudeH+=instance.get_horizontal
        net_force_magnitudeV+=instance.get_vertical
    net_force_magnitude=((net_force_magnitudeV**2+net_force_magnitudeH**2)**0.5)
    net_force_angle=atan2(net_force_magnitudeV, net_force_magnitudeH)
    net_force_angle=round(net_force_magnitude, 1)
    net_force_angle=round(net_force_angle, 1)
    return Force(net_force_magnitude, net_force_angle)

введите описание изображения здесь

1 Ответ

0 голосов
/ 29 марта 2020

Вместо того, чтобы просто упоминать ваши методы, вам нужно вызвать их:

for instance in list_of_instances:
    net_force_magnitudeH+=instance.get_horizontal()  # Add parens.
    net_force_magnitudeV+=instance.get_vertical()    # Same.

Вы можете поэкспериментировать в Python REPL, чтобы увидеть разницу:

In [1]: class Foo():
   ...:     def five(self, n):
   ...:         return 5
   ...:

In [2]: f = Foo()

In [3]: f.five      # We get the method object here.
Out[3]: <bound method Foo.five of <__main__.Foo object at 0x1026d5320>>

In [4]: f.five()    # And here we execute the function, getting its return value.
Out[4]: 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...