Как исправить "xcor (), пропустив 1 обязательный позиционный аргумент: ошибка" self "в Python - PullRequest
0 голосов
/ 05 апреля 2019

Я просто пытаюсь сослаться на местоположение черепахи из класса черепах, который я создал. Я чувствую, что то, что я делаю, теоретически неверно, но похоже, что это сработает. Может быть, эта ошибка за мной, но я просто не уверен.

Я пробовал другие способы размещения черепах, но они стали чрезвычайно сложными и непригодными.

class Maze_wall(Turtle):

    def __init__(self, x_loc, y_loc):
       super().__init__()
       self.color("#ffffff")
       self.penup()
       self.speed(0)
       self.shape("square")
       self.shapesize(stretch_wid=0.95, stretch_len=0.95)
       self.goto(x_loc, y_loc)
       self.showturtle()

Выше мой класс черепах, а ниже я пытаюсь сослаться на координаты x и y черепах.

def wall_right():
    Maze_wall(Maze_wall.xcor(), Maze_wall.ycor())
def wall_left():
    Maze_wall(Maze_wall.xcor(), Maze_wall.ycor())
def wall_up():
    Maze_wall(Maze_wall.xcor(), Maze_wall.ycor())
def wall_down():
    Maze_wall(Maze_wall.xcor(), Maze_wall.ycor())

Моя цель состоит в том, чтобы каждая функция размещала черепаху на основе текущего местоположения черепах.

1 Ответ

0 голосов
/ 05 апреля 2019

Краткий ответ: вы вызываете .xcor() для подкласса черепахи вместо экземпляра черепахи.

Более длинный ответ: вы, кажется, смешиваете черепаху, которую используете, чтобы выложить лабиринт с черепахами, которые станут стенами лабиринта. Вы не можете спросить у стены, где она находится, пока она не существовала. То, что я ожидал бы, код больше похож на:

from turtle import Screen, Turtle

class Maze_wall(Turtle):

    def __init__(self, x_loc, y_loc):
        super().__init__(visible=False)

        self.shape('square')
        self.speed('fastest')
        self.color('black')
        self.penup()
        self.shapesize(stretch_wid=0.95, stretch_len=0.95)
        self.goto(x_loc, y_loc)
        self.showturtle()

def wall_right(turtle):
        return Maze_wall(turtle.xcor(), turtle.ycor())

builder = Turtle(visible=False)
builder.penup()

walls = []

for _ in range(4):
    builder.forward(100)
    wall = wall_right(builder)
    walls.append(wall)
    builder.left(90)

screen = Screen()
screen.exitonclick()
...