Многие программы поддерживают так называемые плагины (дополнение, расширения и т.п.), с помощью которых можно расширять функциональность программы. На Python делать программы, поддерживающие плагины особенно легко и приятно. Потому что с одной стороны в качестве плагина могут выступать полноценные классы, а с другой стороны благодаря кроссплатформенности языка Python плагины так же остаются кроссплатформенными. Давайте посмотрим что нужно сделать, чтобы ваша программа тоже поддерживала плагины. Заодно убедимся как это легко.
Первый пример. Основные функции
Вначале давайте договоримся о структуре тестовых примеров. Модуль основной программы будет называться main.py, а плагины будут лежать в папке plugins, располагающейся рядом с этим файлом. Чтобы Python принял plugins за пакет, в нем должен находиться файл с именем __init__.py (в нашем случае он будет пустым).
Сначала представим, что динамически во время выполнения программы нам не нужно узнавать имя плагина и мы его знаем на этапе программирования. Пусть плагин имеет имя my_plugin.py и располагается в папке plugins. И пусть внутри файла my_plugin.py находится класс pluginClass, который содержит всю функциональность плагина. Вот его код:
Как создавать плагины Minecraft в Intellij IDEA. Часть 1
class pluginClass ( object ) :
def __init__ ( self ) :
pass
def run ( self ) :
print «Hello, Plug-in!»
В конечном итоге нам необходимо во время выполнения программы добраться до этого класса, создать его экземпляр и выполнить метод run. Для простоты на первое время договоримся, что в этом модуле нет других классов кроме pluginClass. Как бы мы поступили, если бы все имена (и модуля, и класса) были бы доступны во время программирования? Скорее всего вот так:
import plugins. my_plugin
cls = plugins. my_plugin . pluginClass ( )
cls. run ( )
И в результате получили бы сообщение «Hello, Plug-in!». А теперь вернемся к нашей задаче. Нам нужно сделать то же самое, но при этом имя модуля my_plugin и имя класса pluginClass хранится в соответствующих строковых переменных.
Импорт модуля плагина
Аналогом встроенной директивы import является функция __import__ , она позволяет импортировать модули, имена которых на этапе написания программы неизвестны. У функции __import__ пять параметров, но обязательным является только первый. Необязательные параметры в данной статье мы использовать не будем, поэтому про них умолчим. Итак, единственный обязательный параметр — это имя пакета или модуля, который мы хотим импортировать. Если импорт пройдет удачно, функция возвратит экземпляр класса, который хранит все импортированные элементы.
Начнем с импортирования модуля. Директива import нам не поможет. Зато мы можем воспользоваться функцией __import__ . Аналогом первой строки из записанного выше примера будет следующий код:
package_obj = __import__ ( «plugins.my_plugin» )
После этого переменная package_obj станет экземпляром класса загруженного модуля (пакета) plugins. Чтобы убедиться в этом выполним команду
1. Установка и настройка Minecraft + Python (в Windows)
print package_obj
При этом мы получим что-то вроде (путь, разумеется, может быть другой):
Это сообщение мало информативно, поэтому применим к переменной package_obj встроенную функцию dir, которая возвращает имеющиеся в package_obj атрибуты. Итак, выполним следующий код:
print dir ( package_obj )
В результате на экран выведется такой список:
[‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’, ‘__path__’, ‘my_plugin’]
Обратите внимание на последний элемент списка — это и есть наш плагин. Итак, пакет мы загрузили, но как нам добраться до модуля нашего плагина? Для этого сначала воспользуемся встроенной функцией getattr, которая позволяет получить из модуля или пакета (в нашем случае package_obj) экземпляр класса атрибута (а нашем случае my_plugin). Эта функция принимает два параметра: соответственно экземпляр объекта, атрибут которого надо получить и строковую переменную, которая содержит имя атрибута. Применяя функцию getattr на пакет, в случае успеха мы получим экземпляр загруженного модуля. Выполним следующий код:
module_obj = getattr ( package_obj , «my_plugin» )
print module_obj
Если все прошло удачно, на экране мы увидим примерно такой результат:
Но скорее всего в программе придется загружать не один плагин, а несколько. Как в этом случае поведет себя функция __import__ ? Рассмотрим пример, в котором загружаются два плагина (все они должны находиться в папке plugins.
modulename1 = «my_plugin_1»
modulename2 = «my_plugin_2»
classname = «pluginClass1»
package_obj = __import__ ( «plugins.» + modulename1 )
package_obj = __import__ ( «plugins.» + modulename2 )
print dir ( package_obj )
В результате на экране вы увидите следующий результат:
[‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’, ‘__path__’, ‘my_plugin_1’, ‘my_plugin_2’]
В этом примере результат импорта мы каждый раз присваиваем одной и той же переменной. Но в результате после каждой операции импорта в нее добавляется новый импортированный модуль. Скачать этот пример можно по адресу — test1_1.zip.
Получаем доступ к классу
Итак, модуль my_plugin мы загрузили. Осталось добраться до класса, который содержится внутри. Для этого воспользуемся уже знакомой нам функцией dir и убедимся, внутри действительно хранится наш класс:
print dir ( module_obj )
В результате выполнения этого кода получим:
Источник: jenyay.net
Можно ли написать плагин для Minecraft Java на языке программирования Python??
у меня появилось желание написать плагин на майнкрафт. Умею писать код только на Python, гуглил ответов не нашел только на skript и на JavaScript. Вообще есть модуль на пайтоне для майнкрафта?
Голосование за лучший ответ
Для Майна пишется только на Java
Гена СамсоновУченик (164) 5 месяцев назад
да блин, но спасибо за ответ!
Закажи у кого нибудь написание плагина, который позволит писать на Python, и будет тебе счастье.
Да и в чём сложность изучить Java?
Гена СамсоновУченик (164) 5 месяцев назад
банальная лень
Nieren Искусственный Интеллект (178923) А изучать Python не лень?)
Гена СамсоновУченик (164) 5 месяцев назад
и пайтон легко изучить
Nieren Искусственный Интеллект (178923) Ну, гoвнoкодить каждый может научиться
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Источник: otvet.mail.ru
Программирование на Python в игре Minecraft
Данный курс разрабатывался как некий компромисс между профессиональным программированием на Python и программированием в Minecraft. На курсе Вы научитесь самостоятельно писать программы на языке программирования Python и управлять с их помощью событиями в мире Minecraft.
Начальный уровень
Начать просмотр
366 учащихся
Чему вы научитесь
- Изучите основы программирования.
- Разовьёте алгоритмическое мышление, умение планировать.
- Приобретёте навыки самостоятельной работы.
- Научитесь создавать собственные игры внутри игры.
- Научитесь разбираться в плагинах для игры и их устанавливать.
- Настроите и запустите свой игровой сервер Майнкрафт.
- Сможете создавать в игровом мире все, что захотите, — лишь дайте волю воображению!
О курсе
На курсе Вы научитесь самостоятельно писать программы на языке программирования Python и управлять с их помощью событиями в мире Minecraft. Освоив основы программирования, Вы тут же пустите новые знания в ход: сможете соорудить постройки, создадите мини-игры и превратите обычные предметы в потрясающие артефакты.
Навыков, которые вы получите, будет достаточно для воплощения в жизнь самых смелых идей! И не только в мире Minecraft. Если захотите, сможете писать на Python игры, приложения и полезные утилиты. Итак, сейчас Вы делаете первый шаг на пути к тому, чтобы стать выдающимся программистом и повелителем мира Minecraft.
Для кого этот курс
Курс создан для школьников от 10 лет для самостоятельного обучения (без взрослых), а так же всех, кто хочет научится программировать на Python с нуля или просто любит Майнкрафт.
Начальные требования
1. Уметь скачивать и устанавливать программы на операционную систему Windows.
2. Усидчивость и желание научиться программировать.
3. Двенадцать часов свободного времени для прохождения всего курса.
Наши преподаватели
Как проходит обучение
Курс представляет из себя серию видеоуроков по всем основным темам изучения языка программирования Python в Майнкрафт с пояснениями и комментариями.
Программа курса
Что вы получаете
- Навыки программирования на Python.
- Знание всех основные тем программирования на Python.
- Запустите свой игровой сервер Майнкрафт и научитесь его администрировать.
Источник: stepik.org