Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
 Аватар для Чеволек Павук
29 / 24 / 5
Регистрация: 25.12.2018
Сообщений: 607

Одни говорят что класс это объект, другие, что класс-это шаблон объекта, дак что такое объект?

10.06.2020, 10:11. Показов 5452. Ответов 9

Студворк — интернет-сервис помощи студентам
Вот читаю и википедию, и на форумах, одни пишут, что класс, это шаблон по которому создается объект, другие пишут, что класс может быть или не быть объектом, третьи пишут, что класс-это всегда объект.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2020, 10:11
Ответы с готовыми решениями:

сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь усложнять?
сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь...

Что такое объект, класс, метод?
Изучаю язык java, а он в свою очень объектно-ориентированный, поэтому хочу знать определения объекта, класса и метода, НО не из Википедии,...

Шаблонный класс что это такое?
Здравствуйте, можете, пожалуйста, привести пример шаблоны класс с 2 параметрами? Везде показывают только примеры с одним параметром, а с...

9
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
10.06.2020, 11:09
Класс — тип, описывающий устройство объектов. Объект — это экземпляр класса. Класс можно сравнить с чертежом, по которому создаются объекты.
Но в то же время класс тоже является объектом стандартного метакласса type.
Так как в Python понятия тип объекта и класс объекта - это синонимы, то это можно увидеть при помощи функции type.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Определим пустой класс
class A:
    pass
 
# Создадим объект (экземпляр) этого класса
a = A()
 
# Выведем тип созданного экземпляра
print(type(a))  # <class '__main__.A'>
# Судя по выводу a является объектом класса A
 
 
# Выведем тип созданного нами класса
print(type(A))  # <class 'type'>
# Судя по выводу класс A является объектом класса type
1
 Аватар для Чеволек Павук
29 / 24 / 5
Регистрация: 25.12.2018
Сообщений: 607
10.06.2020, 11:25  [ТС]
Я это читал, спасибо что скопировали и вставили сюда текст. А мой вопрос вы, явно, прочитали не весь.
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
10.06.2020, 11:30
Цитата Сообщение от Чеволек Павук Посмотреть сообщение
спасибо что скопировали и вставили сюда текст
Лень было печатать.
Цитата Сообщение от Чеволек Павук Посмотреть сообщение
А мой вопрос вы, явно, прочитали не весь.
И на какую часть вашего вопроса я не ответил? У вас из вопросительного только:
Цитата Сообщение от Чеволек Павук Посмотреть сообщение
дак что такое объект?
Я скопировал ответил:
Цитата Сообщение от unfindable_404 Посмотреть сообщение
Объект — это экземпляр класса.
И привёл примеры. Если что-то не понятно, то можно переспросить или задать более конкретный вопрос. Я вам тут не особо горю желанием пересказывать целиком основы ООП.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
10.06.2020, 14:41
Лучший ответ Сообщение было отмечено Чеволек Павук как решение

Решение

Чеволек Павук, ООП это способ моделировать реальный мыслительный процесс человека (хотя некоторые используют ООП формально, не вникая в его реальную сущность). Объектно ориентированные языки появились уже давно, я сейчас даже и не упомню названия их всех.
Вот здесь перечислен список языков программирования в той или иной степени использующие ООП.
https://ru.qwe.wiki/wiki/List_... _languages Как видите их огромное количество.
Я уже несколько раз на этом форуме объяснял, что такое ООП.
Сейчас поищу в своих комментариях и выложу здесь.

Добавлено через 1 час 4 минуты
Чеволек Павук, Я уже столько наклепал комментариев, что что-то найти проблематично. Поэтому напишу по новой.
Все, что мы наблюдаем в окружающем нас мире, это объекты и действия их или над ними.
Надеюсь Вы пользуетесь стульями? Стул это объект. Так же в нашем сознании он также является объектом. Объект нашего сознания, это отображение объекта реального мира. В реальности Вы не можете собрать вместе все стулья, с которыми Вы когда то сталкивались в реальной жизни. Однако наш мозг обладает способностью запоминать образы объектов и позже вызывать их в памяти. Что позволяет их сравнивать и находить общие черты. (свойства). Объекты обладающие одинаковыми свойствами мы мысленно объединяем в один класс. Например класс стульев. Основной признак стула, что мы можем на нем сидеть. Например поваленное дерево в лесу, тоже может использоваться как стул. Но одновременно оно является деревом, со своими специфическими свойствами, то есть одновременно принадлежит классу деревьев. В первых ООП языках было ветвление только вниз. Хотя в реальности, как мы видим ветвление может быть и вверх. В питоне ветвление и вниз и вверх. Один класс может не только иметь подклассы, но и являться подклассом нескольких суперклассов.
Например, для класса стульев существуют подклассы Стулья деревянные, Стулья пластмассовые, стулья металлические и так далее. В свою очередь класс стульев является подклассом класса Мебель.
Но классы, это объекты нашего мышления. Вы не можете наблюдать класс в реальности, а только отдельные объекты этого класса. Например конкретный стул, на котором Вы сидите за компьютером. В питоне, конкретные объекты принадлежащие некоторому классу, называются экземплярами этого класса. Но принадлежит реальный объект какому либо классу, мы судим сравнивая его свойства со свойствами других объектов принадлежащих этому классу. У нашего разума есть такая особенность, когда мы начинаем думать о классе объектов в реальном мире, мы начинаем мысленно перебирать в памяти объекты, принадлежащие этому классу. И фиксировать те свойства, которые являются общими для всех этих реальных объектов.
И вот тут формируется в нашем мышлении такой специфический объект, который является собирательным объектом всех объектов принадлежащих конкретному классу. Он принадлежит данному классу, но содержит только те свойства, которые являются общими для всех реальных объектов данного класса. Я такой объект нашего мышления называю "Обобщенным объектом класса". С подобным объектом на строго научном уровне я впервые столкнулся изучая книгу "Теория множеств" группы французских математиков под псевдонимом "Бурбаки".
В питоне этот объект называется self.

Добавлено через 7 минут
Чеволек Павук, Подумайте, что Вам не понятно и задавайте вопросы. А я пока подберу несколько примеров использования ООП в программировании на питоне и поясню их.
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.06.2020, 15:28
Цитата Сообщение от Чеволек Павук Посмотреть сообщение
Вот читаю и википедию, и на форумах,
Читайте документацию по языку. Там всегда описана модель языка и только она является истинной для конкретного языка.
https://docs.python.org/3/reference/datamodel.html
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
10.06.2020, 17:07
Лучший ответ Сообщение было отмечено Чеволек Павук как решение

Решение

Чеволек Павук, Кстати я вам так и не объяснил, что является объектом в питоне.
Объект в питоне оформляется в виде некоторой области в оперативной памяти, содержащую некоторую структурированную информацию. Там кстати находится и информация к какому типу (классу) относится данный объект.
Каждая область памяти имеет свой адрес. То есть объект в оперативной памяти имеет свой уникальный адрес. Для того, что бы можно было работать с объектом (который в оперативной памяти), в питоне используются переменные. Но в отличие от других языков программирования, переменные содержат не объекты, а ссылки (адреса) на объекты расположенные в оперативной памяти.
Класс в питоне оформляется так же как объект в оперативной памяти, который в свою очередь может создавать объекты, являющиеся экземплярами этого класса. Технология создания экземпляра класса определена в объекте-классе. Имя класса, это имя переменной, которая содержит ссылку на объект-класс находящийся в оперативной памяти.

Добавлено через 56 минут
Чеволек Павук, Вот пример использования ООП для поиска пересечения двух прямоугольников, относящихся к прямоугольникам со сторонами параллельными осям координат.
Класс: Реализуйте класс Rectangle для описания прямоугольника, стороны которого параллельны осям координат.
Копирую оттуда сюда свой код.
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
class Rectangle:
    def __init__(self, x, y, w, h):
        self.x = x
        self.y = y
        self.w = w
        self.h = h
    def intersection(self, other):
        if ((other.x>=self.x+self.w)or(other.y>=self.y+self.h)or
            (self.x>=other.x+other.w)or(self.y>=other.y+other.h)):
            print('None')
        else:
            R3 = Rectangle(0, 0, 0, 0)
            R3.x = max(self.x, other.x)
            R3.w = min(self.x + self.w, other.x + other.w) - R3.x
            R3.y = max(self.y, other.y)
            R3.h = min(self.y + self.h, other.y + other.h) - R3.y
            return R3
 
if __name__ == '__main__':
    rect1 = Rectangle(0.1, 0.2, 10.8, 10.07)
    rect2 = Rectangle(5.4, 5.8, 10.25, 10.45)
    if rect1.intersection(rect2):
        rect3 = rect1.intersection(rect2)
        print((rect3.x, rect3.y, rect3.w, rect3.h))
        print(rect3)
Рассмотрим как он работает. Для того, что бы работать с конкретными прямоугольниками мы создаем класс прямоугольников со сторонами параллельными осям.
Не знаю, кто как создает классы, (может только ориентируясь на документацию), я же делаю это так.
Мысленно или на листочке рассматриваю объекты этого класса, и ищу их общие свойства и общие действия, которые можно над ними осуществлять.
Кстати, когда я писал этот код, я рисовал реальные прямоугольники на листе бумаги.
Дальше рассуждаем. Любой прямоугольник на плоскости можно однозначно определить координатами левого нижнего угла (x, y), шириной w, высотой h и углом angle относительно оси координат x.
Тут в коде мое упущение, я не показал что у прямоугольника есть свойство angle и оно для этого класса равно нулю angle=0.
Но код работает правильно, так как я это свойство учел по умолчанию, когда писал метод intersection.
Хотя это свойство экземпляров данного класса можно было указать, разместив в перечне свойств координаты правого верхнего угла, указав их как вычисляемые через другие параметры.
Описывая метод пересечения текущего экземпляра класса (к которому применяется данный метод и который в методе обозначен как self) и другого экземпляра этого же класса (обозначенного как other), я на бумаге рассматривая расположение двух конкретных прямоугольников вывел формулы, по которым необходимо производить вычисления и использовал их в методе.

Добавлено через 5 минут
Мысль, которую я хочу донести. Когда Вы применяете ООП, то используйте объекты своего мышления в качестве объектов питона, описывая их по подобию объектов которые вы мысленно держите в голове. Так Вы сможите избежать многих ошибок используя при программировании ООП.
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
10.06.2020, 21:31
Цитата Сообщение от Чеволек Павук Посмотреть сообщение
Вот читаю и википедию, и на форумах, одни пишут, что класс, это шаблон по которому создается объект, другие пишут, что класс может быть или не быть объектом, третьи пишут, что класс-это всегда объект.
Есть математика, а есть сдача в магазине. В чём разница? Математика это идеи, концепции, а сдача в магазине это реализация.

ООП - это идея. Говоря о классах и объектах в ООП, вам надо взять книгу по ООП и выучить определения а не лазить по форумам и википедиям.

Поддержка ООП в разных ЯП (языках программирования) бывает разной. Чисто ООП ЯП можно по пальцам пересчитать, остальные в силу оптимизаций в угоду эффективности или по другим соображениям уходят от него на разное растояние.
Чтобы узнать о поддержке ООП вашим ЯП, изучайте ЯП. По книгам, а лучше по официальной документации, но точно не по форумам и википедиям.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.06.2020, 12:12
Лучший ответ Сообщение было отмечено Чеволек Павук как решение

Решение

Чеволек Павук, Вы своим вопросом запустили в моей голове мыслительный процесс по определению понятия "объект питона". Я написал, что
Цитата Сообщение от Viktorrus Посмотреть сообщение
Объект в питоне оформляется в виде некоторой области в оперативной памяти, содержащую некоторую структурированную информацию
и это действительно так. Но при этом не любая структурированная область оперативной памяти является объектом питона.
Поэтому продолжим разбираться, что же такое "объект питона".
Для начала определим несколько базовых понятий, что бы не уподобляться некоторым философам, которые ведут дискуссию не определившись с понятиями. Как говорится в поговорке "один про Фому, другой про Ерёму".

Литерал - это форма записи.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Если простыми словами, то литерал в Python – это простейший способ создания объектов. Например:
 
1 # числовой литерал
 
Python
 
"I'am a string" # строковый литерал
 
Python
 
[1, 2, 4, 6] # литерал списка
 
Python
 
{'a': 1, 'b': 2, 'c': 3} # литерал словаря
 
Но, поскольку такая запись не имеет смысла, так как с созданным объектом нужно что-то сделать или чему-то присвоить, то обычно все примеры в литературе пишутся в виде:
Python
 
a = 1
 
На этом месте у новичка уже глаза разбегаются – где здесь что. Так вот, слева – переменная, справа – литерал.
https://djangofan.ru/python-literals
https://ru.wikipedia.org/wiki/... %BA%D0%B0)

Тип или класс (начиная с версии 3.0 это синонимы)
В идеологии питона, как и в мыслительном процессе у человека, любой объект принадлежит некоторому классу (обычно одновременно многим классам).
В питоне есть такая функция (одновременно класс) с помощью которой мы можем определять что есть объект, а что нет. Если мы подставляем в эту функцию некоторый аргумент, то если аргумент является объектом, то функция возвращает название класса, которому принадлежит этот объект.
Python
1
2
3
type(obj)
 
obj : Объект, тип которого требуется определить.
Примеры
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> L = [1, 2, 3]
>>> type(L)
<class 'list'>
>>> type(type(L))
<class 'type'>
>>> type(type)
<class 'type'>
>>> type.__bases__
(<class 'object'>,)
>>> T = type(L)
>>> T
<class 'list'>
>>> type(T)
<class 'type'>
В примере мы видим метод class.__bases__ -> tuple , который возвращает кортеж суперклассов для данного класса.
Дело в том, что некоторые классы выглядят и ведут себя как функции. И мы часто называем их функциями, хотя они в питоне определены как классы. Например str(obj) -> str . Смотрим стандартную документацию
Python
1
2
3
4
5
6
 class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')
 
    Return a string version of object. If object is not provided, returns the empty string. Otherwise, the behavior of str() depends on whether encoding or errors is given, as follows.
 
    If neither encoding nor errors is given, str(object) returns object.__str__(), which is the “informal” or nicely printable string representation of object. For string objects, this is the string itself. If object does not have a __str__() method, then str() falls back to returning repr(object).
В версиях предшествующих 3.0 был введен класс object. Это класс, который является суперклассом для всех других классов. И все объекты являющиеся объектами какого либо класса, наследуют атрибуты класса object.
object это суперкласс самого верхнего уровня. В нем собраны все атрибуты, которые присутствуют (наследуются) для любого объекта питона. В версиях предшествующих 3.0 нужно было для использования класса object указывать его в качестве суперкласса. Начиная с версии 3.0 object является суперклассом для всех классов (нового стиля) в питоне по умолчанию и указывать его теперь не нужно.
Теперь можно дать определение понятию "объект" в питоне.
Все, что в питоне является экземпляром некоторого класса, называется "объектом".
Уф! Вроде все. Что не понятно, спрашивайте.

Добавлено через 13 минут
И вдогонку, выдержка из Лутца
"Однако теперь, когда я показал вам все эти способы проверки типа объекта, я должен заметить, что использование таких проверок в программном коде практически всегда является неверным решением (и отличительным признаком бывшего программиста на языке C, приступившего к программированию на языке Python).

Причина, почему такой подход считается неверным, станет понятна позднее, когда мы начнем писать более крупные блоки программного кода, такие как функции, – но это (пожалуй, самая) основная концепция языка Python. Наличие проверок на принадлежность объекта к тому или иному типу отрицательно сказывается на гибкости программного кода, потому что вы ограничиваете его работой с единственным типом данных. Без таких проверок ваш программный код может оказаться в состоянии работать с более широким диапазоном типов. Это связано с идей полиморфизма, о которой упоминалось ранее, и это основная причина отсутствия необходимости описывать типы переменных в языке Python. Как будет говориться далее, программный код на языке Python ориентируется на использование интерфейсов объектов (наборов поддерживаемых операций), а не их типов. Отсутствие заботы об определенных типах означает, что программный код автоматически может обслуживать большинство из них – допустимыми будут любые объекты с совместимыми интерфейсами независимо от конкретного типа. И хотя контроль типов поддерживается, а в редких случаях даже необходим, тем не менее, такой способ мышления чужд языку Python. Вы сами убедитесь, что полиморфизм является ключевой идеей, обеспечивающей успех использования Python.
"
Поясню о чем здесь говорится. Проверку принадлежности к классу type(obj) нужно делать только в интерактивном режиме, но не использовать в коде программы размещенном в файле.
1
 Аватар для Чеволек Павук
29 / 24 / 5
Регистрация: 25.12.2018
Сообщений: 607
11.06.2020, 19:27  [ТС]
Вот бы все так на вопросы отвечали как Viktorrus, все понятным языком, все по полочкам. А что касается литературы, я ее мало читаю, потому что я запоминаю лишь то, что долгим и упорным трудом программирую, спасибо что все объяснили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2020, 19:27
Помогаю со студенческими работами здесь

Что такое шаблон, кроме того, что это набор тегов которые при помощи php скрипта заменяются на контент?
Объясните пожалуйста что такое шаблон, кроме того что это набор тегов которые при помощи php скрипта заменяются на контент.

Класс-контейнер? Что это такое и с чем его «едят»?
Вечер добрый, столкнулся со следующей проблемой, в общем, есть задание: Создать класс-контейнер, который является абстракцией текста и...

Что это за объект?
На картинке показан интересующий объект - всплывающая подказка. Наверняка это что-то стандартное, но я что-то найти такое не могу (попросту...

Подскажите, что это за объект?
Есть такая директива и макросу warning передается аргумент disable со значение 4018. #pragma warning (disable: 4018 ) disable: 4018...

Что такое экземпляр класса, объект класса, статический и обычный конструктор/метод/класс/переменная?
Объясните пожалуйста простыми словами(с примерами небольшими), что такое экземпляр класса, объект класса, статический и обычный...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru