Уведомления

Группа в Telegram: @pythonsu

#1 Март 20, 2020 07:09:10

SlS
Зарегистрирован: 2019-08-07
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Файл выдает AttributeError

Учу Kivy по этому уроку(https://www.youtube.com/watch?v=tqQnUio-j4g&t=205s), но при запуске файла через cmd выдает:
self.ball.center = self.center
AttributeError: ‘NoneType’ object has no attribute ‘center’
Подскажите, в чем ошибка?
Код:

 from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import (
    NumericProperty, ReferenceListProperty, ObjectProperty
)
from kivy.vector import Vector
from kivy.clock import Clock
from random import randint
class PongBall(Widget):
    velocity_x = NumericProperty(0)
    velocity_y = NumericProperty(0)
    velocity = ReferenceListProperty(velocity_x, velocity_y)
    def move(self):
        self.pos = Vector(*self.velocity) + self.pos
class PongGame(Widget):
    ball = ObjectProperty(None)
    def serve_ball(self):
        self.ball.center = self.center
        self.ball.velocity = Vector(4, 0).rotate(randint(0, 360))
    def update(self, dt):
        self.ball.move()
        if(self.ball.y < 0) or (self.ball.top > self.height):
            self.ball.velocity_y *= -1
        if(self.ball.x < 0) or (self.ball.right > self.width):
            self.ball.velocity_x *= -1        
class PongApp(App):
    def build(self):
        game = PongGame()
        game.serve_ball()
        Clock.schedule_interval(game.update, 1.0/60)
        return game
if __name__ == '__main__':
    PongApp().run()

Отредактировано SlS (Март 20, 2020 07:09:52)

Офлайн

#2 Март 20, 2020 08:21:37

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Файл выдает AttributeError

это значит что у ball = ObjectProperty(None) нет такого атрибута как center
посмотереть атрибуты объекта можете так print(self.ball.__dict__)



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#3 Март 20, 2020 11:19:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Файл выдает AttributeError

AD0DE412
посмотереть атрибуты объекта можете так
Довольно странная рекомендация. __dict__ содержит только данные объекта, и разумеется, там не представлены ни атрибуты его класса, ни атрибуты классов родителей.

 class Foo(object):
    @property
    def foo(self):
        return 0
f = Foo()
print(f.__dict__)

внезапно оказывается, что __dict__ у объекта foo пустой, и это логично, потому что property это дескриптор и принадлежит классу.

вс любом учебнике нам напишут, что специально для вышеуказанных целей существует функция dir , котрая получит все реальные атрибуты пройдясь по всему дереву наследования.



Офлайн

#4 Март 20, 2020 11:54:49

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Файл выдает AttributeError

ну .. да, только в киви почему то dir ведет себя не очень (может дело в радиусе кривизны моих рук)
и да в ObjectProperty() должен передоваться dict (если верить документации по kivy) ну или просто dict (вот в этом у меня нет уверености)



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#5 Март 20, 2020 12:51:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Файл выдает AttributeError

AD0DE412

AD0DE412
dir ведет себя не очень
что значит “ведет не очень”? Давайте мы будем все-таки как технические специалисты общаться в соответствующих рамках. Покажите наглядно, какие у вас есть проблемы с dir. Мне почему-то кажется, что вы сейчас пытаетесь сделать вумный вид, хотя я уверен, что вы не вполне понимали разницу между __dict__ и dir до моего комментария.

AD0DE412
должен передоваться dict ну или просто dict
это я вообще не понял к чему было сказано, и что означает



Офлайн

#6 Март 20, 2020 16:03:06

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Файл выдает AttributeError

FishHook
Давайте мы будем все-таки как технические специалисты общаться в соответствующих рамках. Покажите наглядно, какие у вас есть проблемы с dir.
не могу т.к. не помню дело недели 2 назд было но помню что “не очень”
FishHook
вы сейчас пытаетесь сделать вумный вид
ага особено сейчас
FishHook
что вы не вполне понимали разницу между __dict__ и dir до моего комментария
пожалуй да … спасиб
FishHook
это я вообще не понял к чему было сказано
я это тому что не понятно что создается этой строчкой ball = ObjectProperty(None) новое имя но тогда туда нужны и свойства значения для этого имени



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Март 20, 2020 16:14:40)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version