Найти - Пользователи
Полная версия: Файл выдает AttributeError
Начало » Центр помощи » Файл выдает AttributeError
1
SlS
Учу 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()
AD0DE412
это значит что у ball = ObjectProperty(None) нет такого атрибута как center
посмотереть атрибуты объекта можете так print(self.ball.__dict__)
FishHook
AD0DE412
посмотереть атрибуты объекта можете так
Довольно странная рекомендация. __dict__ содержит только данные объекта, и разумеется, там не представлены ни атрибуты его класса, ни атрибуты классов родителей.

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

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

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

AD0DE412
должен передоваться dict ну или просто dict
это я вообще не понял к чему было сказано, и что означает
AD0DE412
FishHook
Давайте мы будем все-таки как технические специалисты общаться в соответствующих рамках. Покажите наглядно, какие у вас есть проблемы с dir.
не могу т.к. не помню дело недели 2 назд было но помню что “не очень”
FishHook
вы сейчас пытаетесь сделать вумный вид
ага особено сейчас
FishHook
что вы не вполне понимали разницу между __dict__ и dir до моего комментария
пожалуй да … спасиб
FishHook
это я вообще не понял к чему было сказано
я это тому что не понятно что создается этой строчкой ball = ObjectProperty(None) новое имя но тогда туда нужны и свойства значения для этого имени
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB