Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 5, 2019 16:19:28

zantal
Зарегистрирован: 2019-04-16
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помочь разобраться с функциями и классами

Уважаемые коллеги!
Подсткажите, пожалуйста, новичку:
Вот код основного модуля программы “Шахматы” одного из пользователей GitHub:

import pygame
from pygame.locals import *
import time
from pieces.Queen import Queen

from ChessBoard import ChessBoard

class Game:
def __init__(self):
pygame.init()
self.game_display = pygame.display.set_mode((900, 650))
pygame.display.set_caption('Chess')

self.settings = {'board_image': 'images/orange_board.png'}
self.board_image = pygame.image.load(self.settings['board_image'])

self.clock = pygame.time.Clock()
self.chess_board = ChessBoard()

self.curr_selected_piece = None
self.curr_poss_moves = []
self.all_poss_moves = self.get_all_poss_moves()

self.white_pieces_taken_images = []
self.black_pieces_taken_images = []

self.play_game()

def play_game(self):
"""Loop that executes the game"""
while True:

# Draw whole window (and draw board)
self.draw_window()

for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()

if event.type == pygame.MOUSEBUTTONUP:
# Get user click
self.get_user_click()

# pygame.display.flip()
self.clock.tick(60)

def draw_window(self):
"""Draws everything in the window"""
self.game_display.fill(white)
# Draw side menu
self.draw_side_menu()
# Draw bottom menu
# Draw board
self.draw_board()
pygame.display.update()

Далее перечисляется большое количество различных методов класса и в конце указано:

if __name__ == '__main__':

white = (255,255,255)
blue = (34, 0, 255)
red = (209, 9, 9)
black = (0, 0, 0)
Game()

Вопрос: в самом конце разработчик вызывает функцию. А такой функции у нас нет. У нас Game это класс. на основе которого делаются экземпляры. Что тогда такое Game() относительно класса class Game.

Спасибо!

Офлайн

#2 Дек. 5, 2019 16:40:03

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

Прошу помочь разобраться с функциями и классами

zantal
Что тогда такое Game() относительно класса class Game.
zantal
на основе которого делаются экземпляры.
Ну, собственно, экземпляр и делается



Офлайн

#3 Дек. 5, 2019 16:45:38

zantal
Зарегистрирован: 2019-04-16
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помочь разобраться с функциями и классами

FishHook
Но ведь экземпляры создаются так:
if __name__ == "__main__":
car = Vehicle("blue", 5, 4, "car")
print(car.brake())
print(car.drive())

Нужно ведь присвоить объект экземпляра переменной. К тому же нужно вызывать различные методы. А тут как? Поясните. пожалуйста.

Офлайн

#4 Дек. 5, 2019 17:00:02

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

Прошу помочь разобраться с функциями и классами

zantal
Нужно ведь присвоить объект экземпляра переменной.
Вовсе не обязательно. Переменная - это по сути имя присвоенное некотору объему памяти. Вы создаете объект, под него выделяется память в которой хранятся все данные состовляющие объект. Чтобы вы могли дальше с этим объектом работать, вы объявляете переменную, то есть даете этой памяти имя. Но если вы не собираетесь дальше в программе обращаться к объекту по имени, то можно и не объявлять переменную.

Я же могу сдлать как-то вот так
 o = O1() + O2() + O3(O4())
вообще-то тут создаются четыре объекта классов O1, O2, O3, O4 и один объект неизвестного нам класса. Результат мы сохранили в виде переменной, но промежуточные объекты нам не нужны, мы им не давали никаких имен.



Офлайн

#5 Дек. 5, 2019 18:17:54

zantal
Зарегистрирован: 2019-04-16
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помочь разобраться с функциями и классами

FishHook
Спасибо Вам большое. Разобрался

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version