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

Доступ к созданию объекта класса из вне

16.01.2020, 10:38. Показов 1003. Ответов 9

Студворк — интернет-сервис помощи студентам
Привет! Только приступил к изучению классов. Столкнулся с вопросами на счёт конструктора и написанию переменных без него. В чём отличие?
Насколько я понял из обучающего меня примера
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Person:
 
    # конструктор
    def __init__(self, name):
        self.name = name  # устанавливаем имя
 
    def display_info(self):
        print("Привет, меня зовут", self.name)
 
 
person1 = Person("Tom")
person1.display_info()         # Привет, меня зовут Tom
person2 = Person("Sam")
person2.display_info()         # Привет, меня зовут Sam
, объекты можно создавать только, когда пишешь код. У меня сразу возник вопрос, как можно создавать объекты без открытия IDE?
Я представил, что играю в РПГ-игру, где у меня есть мой герой и враг - два юнита. Я создал их вручную, но что, если я админ, и хочу создавать врагов, столько сколько захочу и с теми характеристиками, оружием и способностями, которые захочу? Тоже открывать IDE? - глупо. А также, как создавать объекты класса самой игрой? То есть есть определённая область, в которую заходит герой и в ней появляются враги в определённом количестве. И ведь в коде писать 10, 20, 30 разных врагов, на все случаи, когда герой зайдёт в эту область, тоже очень глупо.

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
28
import random
 
class Unit:
    def __init__(self, name, health, attack, damage):
        self.name = name
        self.health = health
        self.attack = attack
        self.damage = damage
 
    def unitAttack(self, to):
        atk = random.randrange(1, 101)
        if self.attack > atk:
            to.health = to.health - self.damage
            print(to.health)  
        else:
            print(to.health) 
            
if __name__ == "__main__":
 
    unitName = ""
    unitHealth = 0
    unitAttack = 0
    unitDamage = 0
 
    hero = Unit(unitName, unitHealth, unitAttack, unitDamage)
    enemy = Unit(unitName, unitHealth, unitAttack, unitDamage)
 
    print(hero.health)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.01.2020, 10:38
Ответы с готовыми решениями:

Нужно придумать функцию по созданию объекта класса
Нужно придумать функцию ,которая при её вызове будет создавать новый объект класса. Например есть класс Аккаунт. И мне нужно в мейне ,...

Доступ к элементам формы вне класса
Есть форма: class A: public QMainWindow { Q_OBJECT public: QTextEdit* E; }

Функция вне класса для передачи функции объекта
Добрый вечер, уважаемые форумчане. Столкнулся с таким пунктом в условии задания: Создать функцию вне класса для передачи функции...

9
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
16.01.2020, 10:45
Цитата Сообщение от yellyex Посмотреть сообщение
И ведь в коде писать 10, 20, 30 разных врагов, на все случаи, когда герой зайдёт в эту область, тоже очень глупо.
Храните объекты врагов в списке. Хоть одного, хоть 10.
0
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
16.01.2020, 10:48  [ТС]
Рыжий Лис, создавать врагов - просто прибавлять счётчик к списку?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
16.01.2020, 11:17
Нет, в список класть объекты:
Python
1
2
3
4
list_enemy = []
for _ in range(15):
    enemy = Unit(unitName, unitHealth, unitAttack, unitDamage)
    list_enemy.append(enemy)
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
16.01.2020, 11:32
как можно создавать объекты без открытия IDE?
Вопрос непонятен. Вообще код обычно пишется в ide. Запускать - для отладки в ide, для рабочего запуска - без.
Объекты создаются в процессе работы программы. Запустите без ide - будет без ide.
0
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
16.01.2020, 11:39  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Нет, в список класть объекты:

Python
1
2
3
4
list_enemy = []
for _ in range(15):
    enemy = Unit(unitName, unitHealth, unitAttack, unitDamage)
    list_enemy.append(enemy)
В Вашем примере enemy один и тот же объект, только под разными индексами?

Добавлено через 2 минуты
dondublon, Есть IDE, где пишутся возможные юниты, а есть игра, которая уже запущена и в ней возможность создавать тех же юнитов.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
16.01.2020, 11:53
Нет, создаются разные объекты.
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
16.01.2020, 12:32
dondublon, Есть IDE, где пишутся возможные юниты, а есть игра, которая уже запущена и в ней возможность создавать тех же юнитов.
Есть IDE, которая, кроме всего прочего, умеет запускать вашу программу. После того, как программа запущена - она ведёт себя примерно также, как и запущенная не из ide. То есть "у ней внутре" и создаются и содержатся все объекты.

По поводу "создавать в уже запущенной игре" - вопрос интересный. Понятно, что для того, чтобы получить команду "создай юнит", игра как-то должна общаться с внешним миром - откуда компетентные органы уполномоченные лица смогут эту команду послать.

И вот тут, то есть каким боком игра поворачивается к миру, чтобы принимать команды - уже возможны варианты.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
16.01.2020, 14:29
Цитата Сообщение от yellyex Посмотреть сообщение
И ведь в коде писать 10, 20, 30 разных врагов, на все случаи, когда герой зайдёт в эту область, тоже очень глупо.
На машине можно ездить двумя способами:
1) Заправил машинку, сел, завел и поехал.
2) Подтолкнул машинку и сел. Проехался чутка, вышел, опять подтолкнул, сел и т.д.

Первый способ называется программированием. Второй - то чем занимаются люди не понимающие программирования.
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
16.01.2020, 14:51
Garry Galler, помоему, тут с толкача гн заведется.)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2020, 14:51
Помогаю со студенческими работами здесь

Создание объекта класса вне юнита, где объявлен этот класс
Первый юнит (Core.cpp): //--------------------------------------------------------------------------- #pragma hdrstop #include...

Доступ к элементу объекта класса
Приветствую! Недавно начала изучать Java, появился следующий вопрос: предположим, мы создаем обертку для массива, например, класс...

доступ к мемберам класса (объекта) в perl
всем привет помогите неграмотному :) надо маленько перл-программу помодифицировать. есть такое обращение: $cp->{blabla}...

Задача по созданию из bean класса proxy и фабрики по созданию объектов
Есть задача. Создайте способность объектов действовать как прокси вместо использования исходного поведения. Таким образом, для...

Доступ к методам класса без создания объекта
Почему доступны методы foo() и bar() класса А, если нет ни одного объекта это класса? #include <iostream> class A { ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru