Найти - Пользователи
Полная версия: Прошу помочь разобраться с функциями и классами
Начало » Центр помощи » Прошу помочь разобраться с функциями и классами
1
zantal
Уважаемые коллеги!
Подсткажите, пожалуйста, новичку:
Вот код основного модуля программы “Шахматы” одного из пользователей 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.

Спасибо!
FishHook
zantal
Что тогда такое Game() относительно класса class Game.
zantal
на основе которого делаются экземпляры.
Ну, собственно, экземпляр и делается
zantal
FishHook
Но ведь экземпляры создаются так:
if __name__ == "__main__":
car = Vehicle("blue", 5, 4, "car")
print(car.brake())
print(car.drive())

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

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

zantal
FishHook
Спасибо Вам большое. Разобрался
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