在Python中使用面向对象编程时出现属性错误

2024-06-16 14:44:11 发布

您现在位置:Python中文网/ 问答频道 /正文

运行main函数时出现属性错误。我正在从一个单独的文件调用一个类。该错误表示对象无人机中没有属性“高度”

我已经在drone.py中的class对象中启动了该属性。 然后我称之为无人机进口无人机。我看不出我的问题在哪里。我已经玩了好几个小时了

# drone.py

class Drone:
    def _init_(self):
        self.height = 0.0
        self.speed = 0.0

    def accelerate(self):
        self.speed = self.speed +10

    def decelerate(self):
        if self.speed >= 10:
            self.speed = self.speed -10

    def ascend(self):
        self.height = self.height +10

    def descend(self):
        if self.height >= 10:
            self.height = self.height -10

# fly_drone.py

from drone import Drone

def main():
    drone1 = Drone()
    operation = int(input("Enter 1 for accelerate, 2 for decelerate, 3 for ascend, 4 for descend, 0 for exit:"))
    while operation != 0:
        if operation == 1:
            drone1 = drone1.height
            drone1.ascend()
            print("Speed:", drone1.speed, "Height:", drone1.height)

main()

我正在努力实现: 速度:0高度:10

这是我的错误消息:

Enter 1 for accelerate, 2 for decelerate, 3 for ascend, 4 for descend, 0 for exit:1
Traceback (most recent call last):
  File "C:/Python Projects/CSC121Lab13/fly_drone.py", line 12, in <module>
    main()
  File "C:/Python Projects/CSC121Lab13/fly_drone.py", line 8, in main
    drone1 = drone1.height
AttributeError: 'Drone' object has no attribute 'height'

Process finished with exit code 1

Tags: pyselffor属性maindef错误speed
1条回答
网友
1楼 · 发布于 2024-06-16 14:44:11

我相信这是因为您在init周围只使用了一个下划线(u),而不是所需的双下划线。因此,名称损坏将无法正常工作,这意味着不会初始化height属性

因此,解决办法如下:

class Drone:
    def __init__(self):
        self.height = 0.0
        self.speed = 0.0

有关下划线https://stackoverflow.com/a/1301369/11329170的详细信息,请参见此处

相关问题 更多 >