【问题标题】:Python Error when using created class in another function在另一个函数中使用创建的类时出现 Python 错误
【发布时间】:2020-03-29 00:37:16
【问题描述】:

我正在尝试创建一个函数来在给定力列表(我为其创建了一个类)时找到净力,当我尝试遍历列表并使用另一种方法时出现错误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)

enter image description here

【问题讨论】:

  • 为了将来参考,在您的问题中以文本而不是图像的形式包含错误消息会有所帮助。

标签: python function class methods


【解决方案1】:

您需要调用它们,而不是仅仅提及您的方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多