Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/103: Рейтинг темы: голосов - 103, средняя оценка - 4.68
3 / 3 / 1
Регистрация: 24.03.2011
Сообщений: 65

Проверка принадлежности объекта к классу

11.06.2016, 15:06. Показов 21061. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
class Mineral:
 
        def show(self):
            print("Минерал:")
            print("Название: ", self.name)
            print("Цвет: ", self.color)
            print("Блеск: ", self.glitter)
            print("Твердость: ", self.hardness) 
 
        def __init__(self, name, color, glitter, hardness):
            self.name = name
            self.color = color
            self.glitter = glitter
            self.hardness = hardness
 
 
Pirit = Mineral("Пирит", "Черный", "Металлический", 6)
Kvarz = Mineral("Кварц", "Белый", "Стеклянный", 7)
oligoklaz = Mineral("Олигоклаз", "Белый", "Жирный", 6)
 
x = Pirit
 
## Если Х является Классом Mineral то:
if x == type(Mineral):
    Mineral.show(x)
 
else:
    print("Ошибка")
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2016, 15:06
Ответы с готовыми решениями:

Проверка принадлежности к классу
В Java есть ф-я instanceof. Есть ли подобная в С++?

Определение принадлежности объекта нужному классу
В общем, тема проста. Есть два виртуальных метода: classname() и IsA(string Name). В чем разница, если в указанном месте ( стрелка в коде )...

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

5
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.06.2016, 15:10
I.G.O.R, init должен стоят после объявления класса, а не где-то в конце
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
class Mineral:
    def __init__(self, name, color, glitter, hardness):
        self.name = name
        self.color = color
        self.glitter = glitter
        self.hardness = hardness
 
    def show(self):
        print("Минерал:")
        print("Название: ", self.name)
        print("Цвет: ", self.color)
        print("Блеск: ", self.glitter)
        print("Твердость: ", self.hardness)
 
 
Pirit = Mineral("Пирит", "Черный", "Металлический", 6)
Kvarz = Mineral("Кварц", "Белый", "Стеклянный", 7)
oligoklaz = Mineral("Олигоклаз", "Белый", "Жирный", 6)
 
x = Pirit
 
if isinstance(x, Mineral):
    Mineral.show(x)
else:
    print("Ошибка")
 
if isinstance('привет', Mineral):
    Mineral.show(x)
else:
    print("Ошибка")
1
3 / 3 / 1
Регистрация: 24.03.2011
Сообщений: 65
12.06.2016, 00:42  [ТС]
А если x = input(), как правильно написать код, что бы " if isinstance(x, Mineral): " выполнялось?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.06.2016, 01:11
Цитата Сообщение от I.G.O.R Посмотреть сообщение
как правильно написать код, что бы " if isinstance(x, Mineral): " выполнялось?
Ни как.
В этом случае нужно где нибудь хранить список строк с названиями материалов и проверять на вхождение строки в этот список.
1
3 / 3 / 1
Регистрация: 24.03.2011
Сообщений: 65
12.06.2016, 01:17  [ТС]
alex925, Спасибо
А как можно сократить эту запись, что бы к каждому объекту не писать по две строки?

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
class Box:
    def __init__(self, name, alpha, beta):
        self.name = str(name)
        self.alpha = float(alpha)
        self.beta = float(beta)
 
    def show(self):
        print("Name: ", self.name)
        print("alpha: ", self.alpha)
        print("beta: ", self.beta)
            
a = Box("Объект А", 10, 20)
b = Box("Объект В", 30, 40)
c = Box("Объект С", 50, 60)
 
x = str(input("Имя объекта: "))
 
## вот здесь:
if x == a.name:
    a.show()
    
elif x == b.name:
    b.show()
    
elif x == c.name:
    c.show()
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.06.2016, 01:26
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
33
34
35
36
37
38
class Mineral:
    objects = []
 
    def __init__(self, name, color, glitter, hardness):
        self.name = name
        self.color = color
        self.glitter = glitter
        self.hardness = hardness
 
        self.objects.append(self)
 
    def show(self):
        print("Минерал:")
        print("Название: ", self.name)
        print("Цвет: ", self.color)
        print("Блеск: ", self.glitter)
        print("Твердость: ", self.hardness)
 
    @classmethod
    def ismineral(cls, name):
        return bool(list(filter(lambda i: i.name == name, cls.objects)))
 
 
Pirit = Mineral("Пирит", "Черный", "Металлический", 6)
Kvarz = Mineral("Кварц", "Белый", "Стеклянный", 7)
oligoklaz = Mineral("Олигоклаз", "Белый", "Жирный", 6)
 
x = input()
 
if Mineral.ismineral(x):
    print(x)
else:
    print("Ошибка")
 
if Mineral.ismineral('привет'):
    print(x)
else:
    print("Ошибка")
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2016, 01:26
Помогаю со студенческими работами здесь

Проверка столкновений обращаясь к классу объекта
Хочу сделать игру платформер на c#, но не пойму как проверить столкновение у множества объектов одного класса. Подскажите пожалуйста как...

Сортировка массива объектов по принадлежности к классу
Есть 3 класса, у которых общим является интерфейс, который они реализуют. Создаётся массив объектов данных классов требуется полученный...

Определение принадлежности объекта
Всем привет. Макрос - определяет - принадлежит объект области или же не принадлежит. В зависимости от этого в табличке D21:D21 -...

Проверка принадлежности
Даны два действительных числа x и y. Проверьте, принадлежит ли точка с координатами (x, y) заштрихованному квадрату (включая его границу)....

Выполнение проверки принадлежности объекта определённому сектору
Задача имеется следующая: есть компас и есть четыре сектора. Угол каждого сектора = 90°, соответственно у каждого есть свои левая и правая...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка 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 - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru