Ошибка атрибута: функция не имеет атрибута «desc» - PullRequest
0 голосов
/ 30 июня 2018

Я пробую код из книги: Начинаем робототехнику с Raspberry Pi и Arduino: с использованием Python и OpenCV. В первой главе автор вводит код, имитирующий управление роботом. В python создается файл с именем robot_sample_class.py и его код:

class Robot(): 
"""
    A simple robot class
    This multi-line comment is a good place
    to provide a description of what the class
    is.
    """

    # define the initiating function.
    # speed = value between 0 and 255
    # duration = value in milliseconds
    def __init__(self, name, desc, color, owner,
                speed = 125, duration = 100):
            # initiates our robot
        self.name = name
        self.desc = desc
        self.color = color
        self.owner = owner
        self.speed = speed
        self.duration = duration

    def drive_forward(self):
        # simulates driving forward
        print(self.name.title() + " is driving" +
                " forward " + str(self.duration) +
                " milliseconds")

    def drive_backward(self):
        # simulates driving backward
        print(self.name.title() + " is driving" +
                " backward " + str(self.duration) +
                " milliseconds")

    def turn_left(self):
        # simulates turning left
        print(self.name.title() + " is turning " +
                " right " + str(self.duration) +
                " milliseconds")

    def turn_right(self):
        # simulates turning right
        print(self.name.title() + " is turning " +
                " left " + str(self.duration) +
                " milliseconds")

    def set_speed(self, speed):
        # sets the speed of the motors
        self.speed = speed
        print("the motor speed is now " +
                str(self.speed))

    def set_duration(self, duration):
        # sets duration of travel
        self. duration = duration
        print("the duration is now " +
                str(self.duration))'

Затем я создаю файл с именем robot_sample.py и вот код:

import robot_sample_class

def my_robot(): Robot("Nomad", "Autonomous rover","black", "Cecil")

print("My robot is a " + my_robot.desc + " called " + my_robot.name)

my_robot.drive_forward()
my_robot.drive_backward()
my_robot.turn_left()
my_robot.turn_right()
my_robot.set_speed(255)
my_robot.set_duration(1000)

Когда я запускаю robot_sample.py, я получаю сообщение об ошибке: print ("Мой робот называется" + my_robot.desc + "+ my_robot.name). AttributeError: объект функции не имеет атрибута «desc».

Я не понимаю, почему функция не имеет атрибута "desc", когда она определена как "Автономный ровер".

1 Ответ

0 голосов
/ 01 июля 2018

Сначала вам нужно импортировать класс Robot из вашего модуля. Во-вторых, вы должны создать его экземпляр (создать переменную этого класса). После этого вы можете использовать его:

from robot_sample_class import Robot

my_robot = Robot("Nomad", "Autonomous rover","black", "Luke Periard")

print("My robot is a " + my_robot.desc + " called " + my_robot.name)
...