3 / 3 / 1
Регистрация: 24.03.2011
Сообщений: 65
1

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

11.06.2016, 15:06. Показов 18270. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2016, 15:06
Ответы с готовыми решениями:

Теория. Проверка принадлежности классам и типам
Как в данном языке осуществляется проверка принадлежности типу. К примеру если нужно все числовые...

проверка объекта
есть 6 переменных, нужно проверить, что все 6 будут не пустыми(возвращают истину)

Проверка принадлежности числа к ряду чисел Фибоначчи
Помогите сделать так, что бы представленный код не выводил 'None' После ответа. Сама задача...

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

5
2738 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
11.06.2016, 15:10 2
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  [ТС] 3
А если x = input(), как правильно написать код, что бы " if isinstance(x, Mineral): " выполнялось?
0
2738 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
12.06.2016, 01:11 4
Цитата Сообщение от I.G.O.R Посмотреть сообщение
как правильно написать код, что бы " if isinstance(x, Mineral): " выполнялось?
Ни как.
В этом случае нужно где нибудь хранить список строк с названиями материалов и проверять на вхождение строки в этот список.
1
3 / 3 / 1
Регистрация: 24.03.2011
Сообщений: 65
12.06.2016, 01:17  [ТС] 5
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
2738 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
12.06.2016, 01:26 6
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2016, 01:26
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru