Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/120: Рейтинг темы: голосов - 120, средняя оценка - 4.64
 Аватар для Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35

Объясните значение метода _init_ и параметр self

07.01.2019, 15:40. Показов 22922. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в книге как-то размыто описывается, а в инете я четкого ответа не нашла. Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.01.2019, 15:40
Ответы с готовыми решениями:

Что означает первый параметр метода этого класса? И почему при вызове метода передаётся один параметр(второй)?
public static HelpPageApiModel GetHelpPageApiModel(this HttpConfiguration config, string apiDescriptionId)

Объясните понятие "параметр" функции/метода
Добрый вечер. Возможно вопрос глупый, но пожалуйста, дайте простой ответ для полного понимания для чего конкретно нужны параметры...

Объясните значение метода SetFIO
Здравствуйте. Разбираясь с классами меня заинтересовал метод. Подскажите пожалуйста что делает этот метод class cSotr // сам класс {...

24
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
07.01.2019, 16:22
метод __init__ вызывается при создании объекта класса, self для обращения в переменным и методам объекта
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.01.2019, 16:33
Цитата Сообщение от Alycia Посмотреть сообщение
в книге как-то размыто
В какой книге? У Лутца (Изучаем Python) - а вы должны читать именно ее - в главе 26 и 28 написано все, что вы должны знать по теме классов.
1
 Аватар для Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
07.01.2019, 16:51  [ТС]
Цитата Сообщение от tooru Посмотреть сообщение
метод __init__ вызывается при создании объекта класса
т.е. init просто объявляет создание объекта?
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,232
07.01.2019, 16:58
Цитата Сообщение от Alycia Посмотреть сообщение
init просто объявляет создание объекта?
нет, в нём описаны инструкции, которые выполняются при создании каждого экземпляра класса. Если вы знакомы с ООП в рамках других языков, то __init__ - это конструктор.
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.01.2019, 17:38
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
в нём описаны инструкции, которые выполняются при создании каждого экземпляра класса
Это неверно. Экземпляр класса создается до вызова метода __init__. В __init__ он лишь инициализируется некими значениями. Поэтому это не конструктор, а инициализатор.
1
07.01.2019, 18:03

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
Это неверно
Рекомендованный Вами Лутц. Издание 4-е, страница 718.
Однако имеется один метод перегрузки оператора, который можно встретить практически в любом классе: метод __init__, который известен как конструктор и используется для инициализации состояния объектов. Методу __init__ следует уделить особое внимание, потому что он, наряду с аргументом self, является одним из ключей к пониманию ООП в языке Python.

И во всех языках инструкции конструктора выполняются после создания объекта. Хотя бы потому что являются переопределением конструктора самого класса Object.

0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.01.2019, 18:22
Лутц упрощает, дабы не вводить в ступор новичков. Никто не запрещает называть __init__ конструктором. Но изучив python чуть глубже вы узнает о существовании метода __new__, который и создает экземпляр.
Вы неверно объяснили суть метода __init__ - даже с учетом упрощенной подачи у Лутца - и я поправил.
1
 Аватар для Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
07.01.2019, 20:20  [ТС]
у меня еще один вопрос назрел, что такое экземпляр? Я так поняла это переменная которой присваивается класс

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Dog():
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def sit(self):
        print(self.name.title() + ' is now sitting')
    
    def roll_over(self):
        print(self.name.title() + ' rolled over!')
 
my_dog = Dog('tuzik', 6) // Здесь переменной my_dog присваивается класс Dog и эта переменная 
//становится экземпляром?
print('Name my dog is ' + my_dog.name.title())
print(str(my_dog.age) + ' years old')
p.s. учусь по книге Эрик Мэтиз изучаем пайтон
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.01.2019, 21:19
Цитата Сообщение от Alycia Посмотреть сообщение
Я так поняла это переменная которой присваивается класс
Переменная это просто имя с которым связывается некоторое значение.
Значением переменной, разумеется, может быть и экземпляр класса.
Но переменная != экземпляр. Если копнуть чуть глубже - переменная это еще и ящик для хранения, потому что связана с указателем на некоторую область памяти.
И хранить она может что угодно.
А экземпляр какого-то класса это объект сконструированный этим классом и обладающий определенными свойствами\атрибутами.
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.01.2019, 21:34
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
И во всех языках инструкции конструктора выполняются после создания объекта. Хотя бы потому что являются переопределением конструктора самого класса Object.
Каша в голове? Что Вы по Вашему называете "созданием" ?
Инициализация то же как бы часть создания/конструирования.

Для большинства языков например С/С++ обычно выделяют "выделение памяти" и "инициализацию" (этой самой памяти значениями") . Но с учетом того что память может выделяться (и освобождать) по разному и может быть "вложенность" объектов одного в другой, то все не так просто.

Добавлено через 5 минут
Цитата Сообщение от Alycia Посмотреть сообщение
// Здесь переменной my_dog присваивается класс Dog и эта переменная //становится экземпляром?
Переменной-ссылкой на экземпляр, но с учетом того что в питоне все "ссылки" то да можно опустить и говорить что это экземляр.
1
 Аватар для Alycia
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
07.01.2019, 22:01  [ТС]
Avazart, можете проверить правильность написания кода? Программа работает, но интересно я написала как положено или он на костылях?

Задание: Ресторан: создайте класс с именем Restaurant. Метод __init__() класса Restaurant должен
содержать два атрибута: restaurant_name и cuisine_type. Создайте метод describe_
restaurant(), который выводит два атрибута, и метод open_restaurant(), который выводит
сообщение о том, что ресторан открыт.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Restaurant():
    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
    
    def describe_restaurant(self):
        print('Our restaurant is name ' + self.restaurant_name.title())
        print('Our cuisin is ' + self.cuisine_type.title())
 
    def open_restaurant(self):
        print(self.restaurant_name.title() + ' Restaurant open from 9:00 am')
 
restaurant = Restaurant('Claude Monet', 'French')
print(restaurant.restaurant_name)
print(restaurant.cuisine_type)
restaurant.open_restaurant()
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.01.2019, 22:54
Да вроде все верно если делать поправку что это очередное глупое учебное задание.

Но в чем проблема, каков смысл этого класса? Как его предполагается использовать?
Это вопросы к больше к составителю задания...
Зная этом можно сказать точно правильно или нет. А так это это бессмысленная трата времени.

Добавлено через 4 минуты
Python
1
2
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
Лучше члены класса делать недоступными(закрытыми) из вне с помощью __ если сразу не оговорено обратное (инкапсуляция, скрытые данных)
Python
1
2
self.__restaurant_name = restaurant_name
self.__cuisine_type = cuisine_type
А для доступа использовать такой инструмент как "свойства".

Цитата Сообщение от Alycia Посмотреть сообщение
метод describe_restaurant(), который выводит
сообщение о том, что ресторан открыт
Лучше в место метода перегрузить методы __str__ и __repr__


Использование print внутри класса плохой стиль, это делает класс монолитным и лишает его гибкости.
Что к примеру если мы захотим выводить его не в консоль, а к примеру в файл?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
08.01.2019, 00:39
Alycia, Что бы понять ООП (объектно ориентированное программирование) нужно обратится к реальности, а точнее к реальному мышлению человека. ООП просто моделирует часть реального мышления человека. Вы ведь в школе изучали виды животных, их классы и подклассы. Например класс парнокопытных и его подкласс коза. Когда мы говорим о козе абстрактно, то оперируем понятием коза принимая во внимание ее свойства, которые присущи всем козам, (рога, копыта, шерсть, цвет, 2 глаза, 4 ноги и так далее), а так же что может делать коза ( в питоне это методы). Например давать молоко, давать шерсть, питаться травой и т.д. Так вот такое обобщенное понятие козы соответствует self в питоне. Класс в питоне может описать класс коз в реальности. Конкретные козы в реальности это экземпляры класса class козы() в питоне. А self для класса "козы" в питоне, соответствует обобщенному понятию козы в мышлении человека.
С помощью инструкции __init__ мы описываем какие свойства у любого экземпляра класса должны быть, И так как это для всех экземпляров класса, то мы эти свойства (атрибуты) присваиваем обобщенному объекту self. То есть те свойства (атрибуты), которыми обладает обобщенный объект класса "козы" self, обладают все конкретные экземпляры этого класса, то есть конкретные козы. Но конкретным козам (экземплярам) могут принадлежать и свои индивидуальные свойства (атрибуты), например пятно на боку, которые не принадлежат другим козам и потому отсутствую у обобщенной козы ( в питоне обозначаемой self).
Написал много, но что не понятно, то задавайте вопросы.

Добавлено через 6 минут
Но сразу замечу, что классы в питоне не строго ответствуют классическим классам в мышлении человека в плане наследования и общих для класса свойств. Но пока не забивайте себе этим голову, эту особенность поймете потом, при углубленном изучении классов.

Добавлено через 50 минут
Добавлю немного про про объекты в питоне и про переменные в нем. Объекты в питоне, это выделенная область в памяти компьютера содержащая определенную информацию, как то числа , экземпляры классов с их атрибутами , словари, списки , строки, файлы и так далее. Для этих объектов обычно существуют переменные, которые содержат ссылки на эти объекты и ничего более. В этом отличие питон от других языков. В других языках переменная является именем конкретной области в памяти где находится информация, и поэтому в тех языках переменная требует объявления с указанием типа. В питоне все по другому. переменная не привязана жестко с областью памяти а только содержит ссылку на некоторый объект в области памяти. Мы можем поменять ссылку в переменной, что бы она ссылалась на другой объект любого типа. Именно поэтому для переменных в питоне не присваивается изначально тип. Любая переменная может перенаправляться ссылкой на любой объект любого типа. Классы в питоне, это объекты. Имя класса, это переменная содержащая ссылку на объект класса в памяти компьютера. Экземпляр класса, это тоже объект. Кстати такая тонкость.
Python
1
2
3
4
5
class Super:
    def __init__(self, data):
        self.data = data
    def ham(self):
        pass
Мы создали класс Super, и с помощью __init__ указали, что все экземпляры этого класса имеют атрибут (свойство) data.
Создание объекта экземпляра происходит когда мы обращаемся через переменную Super к объекту класса применяя круглые скобки.
Запись
Super('spam') создает экземпляр этого класса (объект в памяти) с атрибутом data и его значением 'spam'. Но при этом нет переменной, которая бы на него ссылалась. В некоторых случаях этот прием используется, когда в выражение подставляется не переменная ссылающаяся на экземпляр, а сам экземпляр без имени.
Для того же что бы получить переменную со ссылкой на этот объект экземпляра, необходима следующая запись.
x = Super('spam'). Тогда переменная x будет иметь ссылку на этот экземпляр и через нее мы можем к нему обращаться.
Пока все. Какие будут еще вопросы, обращайтесь.
4
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.01.2019, 00:42
Цитата Сообщение от Viktorrus Посмотреть сообщение
Alycia, Что бы понять ООП (объектно ориентированное программирование) нужно обратится к реальности, а точнее к реальному мышлению человека. ООП просто моделирует часть реального мышления человека. Вы ведь в школе изучали виды животных, их классы и подклассы.
А я бы крайне советовал избегать такого подхода.

И советовал бы относиться к ООП как к инструменту, не более без всякой метафизической ерунды.

Это лишь инструмент позволяющий выразить свои мысли в коде, не более.
И этот инструмент как и любой другой можно использовать не правильно, вместо упрощения кода - усложнять его.
Или вообще просто писать бессмысленный код как Ваше учебное задание.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
08.01.2019, 06:07
Avazart, Avazart, А я бы Вам советовал не переоценивать себя и не считать себя умнее других. Я знаю, что могу ошибаться, а вот Вы похоже про себя такого не думаете и готовы с ходу начать учить других. Удачи Вам в самоутверждении. Поучитесь, как должен себя вести истинный профессионал у Garry Galler. Извините , если был грубоват.

Добавлено через 1 час 44 минуты
Alycia, По поводу Вашего примера
Python
1
2
3
4
class Restaurant():
    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
Здесь все правильно, это классика. Двойного подчеркивания
Python
1
2
self.__restaurant_name = restaurant_name
self.__cuisine_type = cuisine_type
здесь не нужно, оно используется только в больших проектах, когда может быть путаница с именами атрибутов. Двойное подчеркивание автоматически к имени атрибута цепляет имя класса. Вам это не нужно, будет только загромождать программу.
В задании Вас просят только создать класс с заданной структурой. Проверку созданного класса Вы видимо придумали сами.
Я бы проверку сделал так
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
29
30
31
32
class Restaurant():
    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
    
    def describe_restaurant(self):
        # print('Our restaurant is name ' + self.restaurant_name.title())
        # print('Our cuisin is ' + self.cuisine_type.title())
 
        print('Our restaurant is name ', self.restaurant_name)
        print('Our cuisin is ', self.cuisine_type)
 
        # метод title используется тогда, когда нужно начальные буквы в словах преобразовать 
        # из строчных в прописные. Я не вижу здесь в этом необходимости. Но если хотите,
        # то можете оставить.
        # А вот опратор '+' здесь излишен. Достаточно просто указать два аргумента
        #  и print выведет их значения одной строкой
 
    def open_restaurant(self):
        print(self.restaurant_name, ' Restaurant open from 9:00 am')
 
restCM = Restaurant('Claude Monet', 'French') # Даем сокращенное имя экземпляру класса Restaurant,
                                              # а именно конкретному ресторану с именем Claude Monet.
                                              # Имена экземплярам лучше давать с маленькой буквы,
                                              # что бы не путать с именами классов, которые принято
                                              # начинать с прописной буквы, и лучше отличное от имени класса,
                                              # что бы не путаться.
# Теперь проверяем работу методов
 
restCM.describe_restaurant()                  # Круглые скобки после названия метода вызывают его
                                              # (аналогично как и для функций)
restCM.open_restaurant()
Выводит:
Our restaurant is name Claude Monet
Our cuisin is French
Claude Monet Restaurant open from 9:00 am

Добавлено через 21 минуту
Кстати по поводу использования методов перегрузки __str__ и __repr__, использование их на начальной стадии обучения излишне. В свое время когда дойдете до их изучения , то тогда и освоите зачем и как их использовать. У М.Лутца целая глава посвящена изучению методов перегрузки операторов.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.01.2019, 11:17
Цитата Сообщение от Viktorrus Посмотреть сообщение
Avazart, Avazart, А я бы Вам советовал не переоценивать себя и не считать себя умнее других.
А я советую применить этот Ваш совет к самому себе прежде чем что либо озвучивать...

Добавлено через 9 минут
Цитата Сообщение от Viktorrus Посмотреть сообщение
здесь не нужно, оно используется только в больших проектах, когда может быть путаница с именами атрибутов. Двойное подчеркивание автоматически к имени атрибута цепляет имя класса. Вам это не нужно, будет только загромождать программу.
А типа в маленьких проектам есть право гавнокодить?

Цитата Сообщение от Viktorrus Посмотреть сообщение
использование их на начальной стадии обучения излишне.
Типа "делать сразу правильно" это излишне?
По Вашему лучше делать неправильно и потом переучиваться?

Добавлено через 3 минуты
Цитата Сообщение от Viktorrus Посмотреть сообщение
В задании Вас просят только создать класс с заданной структурой.
Я бы сказал куда такое задание можно ...
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
08.01.2019, 16:41
Avazart, Не хотел отвечать, но не удержался
Цитата Сообщение от Avazart Посмотреть сообщение
А типа в маленьких проектам есть право гавнокодить?
Цитата Сообщение от Avazart Посмотреть сообщение
Типа "делать сразу правильно" это излишне?
По Вашему лучше делать неправильно и потом переучиваться?
На уровне начинающего это не является неправильным, просто ограниченно областью применения в соответствии с теми задачами, которые решает начинающий.
Если следовать Вашим советам то учащихся в первом классе сразу нужно учить высшей математике, что бы по Вашему все было правильно, с учетом самых сложных задач математики? Сомневаюсь, что кто то из них после этого что либо освоит и станет профессиональным математиком.
Для того, что бы учить других, мало быть профессионалом в своей области, нужно еще быть профессионалом в преподавательской деятельности.
Все больше в дискуссию с Вами не вступаю, Вы все равно не понимаете о чем я говорю.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.01.2019, 20:42
Цитата Сообщение от Viktorrus Посмотреть сообщение
Если следовать Вашим советам то учащихся в первом классе сразу нужно учить высшей математике, что бы по Вашему все было правильно, с учетом самых сложных задач математики? Сомневаюсь, что кто то из них после этого что либо освоит и станет профессиональным математиком.
Нужно учить не математики, а умению мыслить и придерживать принципов которые которые этому помогают.
Иначе получите бездарей думающих что "на ноль делить нельзя".

Цитата Сообщение от Viktorrus Посмотреть сообщение
Для того, что бы учить других, мало быть профессионалом в своей области, нужно еще быть профессионалом в преподавательской деятельности.
Так обычно говорят бездари ничего не достигшие в своей области, "сам не умеешь - учи других".
0
0 / 0 / 1
Регистрация: 19.09.2016
Сообщений: 11
13.02.2020, 04:06
С помощью инструкции __init__ мы описываем какие свойства у любого экземпляра класса должны быть
Viktorrus, Но можно же задавать и не через __init__, к примеру так?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Koza():
    kopita = 4
    roga = 2
    sherst = True
    glaza = 2
    name = 'Маруся'
    
    def daetMoloka(self, time):
        return (time*2)
     
# Создаем экземпляр
koza1 = Koza()            
# Свойства класса
print('Рога:', koza1.roga)
print('Имя:', koza1.name)
print('Молоко в N часов (2/час):',koza1.daetMoloka(4))
Или такой вариант не корректный и в более продвинутой разработке где-нибудь найдет коса на камень?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2020, 04:06
Помогаю со студенческими работами здесь

Создание метода класса Init
Здравствуйте! Помогите, пожалуйста, разобрать, почему компилятор может выдавать такую ошибку: Project Project1.exe raised exception...

при формировании отчёта в режиме 1 с выявляется ошибка метода контекста.Недопустимое значение параметра (параметр №1)
Здраствуйте я новенький в среде 1 с поэтому могу задавать глупые вопросы.При программировании в модуле был написан код доступа к отчёту ...

Передача метода в метод, метода как параметр
Здравствуйте друзья. Есть значит некоторый фрейм: public class Window extends JFrame implements ActionListener { ... (1) ......

Нарисуйте блок-схему реализации метода Queue::Get. Объясните работу метода
Нарисуйте блок-схему реализации метода Queue::Get. Объясните работу метода. Ребя может кто помочь

Ошибка при загрузке Ubuntu 14.04 LTS: run-init: /sbin/init: Permission denied
Здравствуйте! На компьютере установлена Uuntu 14.04 LTS (64 bit). После установки cups (для соединения с принтером) система перестала...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru