Я хочу создать несколько черепах во вновь созданном классе

У меня есть проблема, когда я должен создать простой объектно-ориентированный код, который создает двух черепах, движущихся в противоположных направлениях, но в моем испытании я столкнулся с неизвестными ошибками.

Я попытался инициализировать две переменные turtle1 и turtle2 с помощью self, потому что я унаследовал Turtle и s

from turtle import *
class moveOpposite(Turtle):
    def __init__(self):
        self.setx=0
        self.sety=0
    def move(self):
        turtle1=self
        turtle2=self
        turtle1.forward(100)
        turtle2.forward(-100)


my_turtle=moveOpposite()
my_turtle.move()

Я не использовал self._go, но моя ошибка говорит, что я сделал так:

self._go(distance)

Я также не использовал self._position и т. д., но он также говорит, что использовал, и дает мне AttributeError

ende = self._position + self._orient * distance
AttributeError: 'moveOpposite' object has no attribute '_position'

После turtle1=self и turtle2=self у вас теперь просто есть три имени для одного объекта черепахи — на самом деле у вас нет ничего созданный. И экземпляры вашего класса moveOpposite в любом случае недействительны Turtle, потому что ваш __init__() не вызывает унаследованный __init__(), который выполняет всевозможные необходимые инициализации.

jasonharper 30.05.2019 15:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы не стал наследовать от Turtle, то есть это, в этой ситуации, поскольку ваш объект не черепаха, а пара из них. Вместо этого я бы использовал подход содержит:

from turtle import Screen, Turtle

class Zax():  # a la Dr. Suess
    def __init__(self):
        self.east_bound = Turtle('turtle')
        self.west_bound = Turtle('turtle')
        self.west_bound.setheading(180)

    def forward(self, distance):
        self.east_bound.forward(distance)
        self.west_bound.forward(distance)

    def right(self, angle):
        self.east_bound.right(angle)
        self.west_bound.right(angle)

    def left(self, angle):
        self.east_bound.left(angle)
        self.west_bound.left(angle)

screen = Screen()

zaxen = Zax()
zaxen.forward(100)

for _ in range(4):
    zaxen.forward(20)
    zaxen.right(90)

screen.exitonclick()

Другие вопросы по теме