Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420

Не оптимально построен класс?

11.06.2018, 22:12. Показов 1298. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова здравствуйте.
У меня есть класс где загружаются текстуры травы различные.
class Terran_class:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    
global x
global y
global image
 
def __init__(self):
        self.trava_1 = pygame.image.load('trava_1.png').convert_alpha()
        self.trava_2 = pygame.image.load('trava_2.png').convert_alpha()
        self.trava_3 = pygame.image.load('trava_3.png').convert_alpha()
        self.trava_4 = pygame.image.load('trava_4.png').convert_alpha()
        self.trava_5 = pygame.image.load('trava_5.png').convert_alpha()
        self.voda = pygame.image.load('voda.png').convert_alpha()
def get_image (self):
        temp = random.randint(1, 5)
        if temp == 1:
            self.image = self.trava_1
        if temp == 2:
            self.image = self.trava_2
        if temp == 3:
            self.image = self.trava_3
        if temp == 4:
            self.image = self.trava_4
        if temp == 5:
            self.image = self.trava_5
        if temp == 6 :
            self.image = self.voda
        return self.image
(Ну и там в конце пара функций связанная с координатами)

Затем я делаю список объектов этого класса и в каждый экземпляр добавляется какая-то текстура случайно.
Ну и потом на карте рандомно рисую растительность.

Python
1
2
3
4
5
def Terran_active():
    temp_Terran = Terran.Terran_class()
    temp_Terran.image = temp_Terran.get_image()
    temp_Terran.get_Coord()
    return temp_Terran
Terran_array.append(Terran_active())


---
И мне как новичку интересно, это наверно АНТИОПТИМАЛЬНО?
temp_Terran = Terran.Terran_class()

Т.е каждый раз получается, что создавая экземпляр класса, загружаются раз за разом одинаковые текстуры?
Т.е вместо того чтоб один раз загрузить 6 текстур и новому экземпляру класса давать их, я каждый раз прогружаю одно и тоже?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.06.2018, 22:12
Ответы с готовыми решениями:

Правильно ли построен класс
STRUCT.cpp #include "STRUCT.h" STRUCT::STRUCT() { clrscr(); printf(" Введите количество спортсменов: "); ...

Неверно построен график
Имеется код: T=44; % длительность сигнала dt = 0.01; %шаг времени t = 0:dt:T; df = 1/T; F = 1/dt; f = -F:2*df:F; s =...

Параллелограмм построен на векторах
Параллелограмм построен на векторах a= p+4q , b= (1/4)(p-q), где |p |= 4, |q |= 2, (p^q )= П/3. Определить: а) косинус угла между...

2
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
11.06.2018, 22:40
Цитата Сообщение от Masai Посмотреть сообщение
Т.е каждый раз получается, что создавая экземпляр класса, загружаются раз за разом одинаковые текстуры?
Именно так, вот простой пример, у текстуры каждого объекта разные адреса в памяти

Python
1
2
3
4
5
6
7
8
9
10
11
import pygame
 
class Im:
    def __init__(self):
        self.image = pygame.image.load("gun.png")
 
a = Im()
b = Im()
 
print(id(a.image))
print(id(b.image))
Можно грузить текстуры отдельно в начале

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pygame
 
class ResManager:
    def __init__(self):
        self.image = pygame.image.load("gun.png")
 
class Im:
    def __init__(self, img):
        self.image = img
 
res = ResManager()
 
a = Im(res.image)
b = Im(res.image)
 
print(id(a.image))
print(id(b.image))
2
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420
12.06.2018, 00:01  [ТС]
Спасибо ТабуретY!

Хорошо, что я хоть догадываться стал об этом и поэтому спросил. =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.06.2018, 00:01
Помогаю со студенческими работами здесь

Параллелограмм построен на векторах
Помогите решить задание из скриншота После решетки идет ответ

Построен не правильный график
По двум уравнениям надо построить график описывающий часть окружности(зависимость h от R).У меня получаются точки,прямые,кривые,а вот часть...

По какой формуле построен график
Никак не мог определить по какой формуле построен график . Помогите пожалуйста найти эту формулу . Прикрепил сам график во вложениях

Сектор построен на конической дуге
Здравствуйте, подскажите, пожалуйста, как мне найти сектор построенный на конической дуге? Возможно есть какие-то формулы? Заранее...

Правильно ли построен график БПФ?
Ребят, вопрос состоит в следующем: мне нужно понять, правильный ли у меня получился график. Что я делал: re=A*cos(i) im=A*sin(i) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru