• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

python - nieoczekiwany błąd

Object Storage Arubacloud
+1 głos
139 wizyt
pytanie zadane 9 sierpnia 2017 w Python przez DODO Bywalec (2,950 p.)

Witam.

Piszę sobie kod rysujący różne figury przestrzenne. Teraz jestem na kostce. To kod:

import pygame
from pygame.locals import *

from OpenGL.GL import *
from OpenGL.GLU import *





class Cube():
    def __init__(self):
        self.vertices = (
            (1, -1, -1),
            (1, 1, -1),
            (-1, 1, -1),
            (-1, -1, -1),
            (1, -1, 1),
            (1, 1, 1),
            (-1, -1, 1),
            (-1, 1, 1),
        )

        self.edges = (
            (0, 1),
            (0, 3),
            (0, 4),
            (2, 1),
            (2, 3),
            (2, 7),
            (6, 3),
            (6, 4),
            (6, 7),
            (5, 1),
            (5, 4),
            (5, 7),
        )

    def draw(self):
        glBegin(GL_LINES)
        for edge in self.edges:
            for vertex in edge:
                glVertex3fv(self.vertices[vertex])
        glEnd()



def main():
    pygame.init()
    display = (1280, 720)
    pygame.display.set_mode(display, DOUBLEBUF | OPENGL)

    gluPerspective(45, (display[0]/display[1]), 0.1, 50)

    glTranslatef(0, 0, -5)
    glRotatef(0, 0, 0, 0)

    cube1 = Cube

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == MOUSEBUTTONDOWN:
                if event.button == 4:
                    glTranslatef(0, 0, 1)
                if event.button == 5:
                    glTranslatef(0, 0, -1)

        keystate = pygame.key.get_pressed()
        if keystate[K_LEFT]:
            glRotatef(5, 0, 5, 0)
        if keystate[K_RIGHT]:
            glRotatef(-5, 0, 5, 0)
        if keystate[K_UP]:
            glRotatef(5, 5, 0, 0)
        if keystate[K_DOWN]:
            glRotatef(-5, 5, 0, 0)

        cube1.draw()
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        pygame.display.flip()
        pygame.time.wait(10)

main()

A to błąd:

Traceback (most recent call last):
  File "[UTAJNIONO]", line 86, in <module>
    main()
  File "[UTAJNIONO]", line 81, in main
    cube1.draw()
TypeError: draw() missing 1 required positional argument: 'self'

Process finished with exit code 1

 

1 odpowiedź

+4 głosów
odpowiedź 9 sierpnia 2017 przez bartolinciu Dyskutant (7,580 p.)
wybrane 9 sierpnia 2017 przez DODO
 
Najlepsza
Zapisem cube1=Cube przypisałeś klasę Cube do etykiety cube1. Później wywołując metodę draw wywołujesz ją bez obiektu. Jak dodasz okrągłe nawiasy "()" w linii 58 to cube1 będzie obiektem klasy Cube.
komentarz 9 sierpnia 2017 przez DODO Bywalec (2,950 p.)
Wielkie dzięki :)

Podobne pytania

0 głosów
1 odpowiedź 107 wizyt
0 głosów
4 odpowiedzi 629 wizyt
pytanie zadane 20 listopada 2015 w C i C++ przez ZakosiliMiNeta Nałogowiec (30,870 p.)
0 głosów
1 odpowiedź 2,016 wizyt
pytanie zadane 19 sierpnia 2018 w Python przez MazdyxX Nowicjusz (190 p.)

92,555 zapytań

141,403 odpowiedzi

319,556 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...