Задать вопрос
@Span4ev

Как вывести вместо булевого значение другое?

Здравствуйте. Я учу ренпай, но использую классы пайтона, который не очень хорошо знаю. Знание самого ренпая не имеет значения, тут всё на пайтоне.
У меня есть десятки параметров экземпляра класса, или True или False. Нужно выводить в информационную панель по запросу состояние. Цифровое значение, "False" или "True" - не проблема, но как выводить другое слово, в зависимости от булевого значения? Я хочу вместо "False" выводить "нет". Например вот так:

class Person:
        def __init__(self, name):

        	self.name 	= name
        	self.something_1 = False
        	self.something_2 = True

       	# как сюда передать название уже имеющегося атрибута класса и вывести его состояние?
        # Чтобы attr связывался с атрибутом класса, вместо attr подставлялось self.something_2
       	# Что-то типа этого

        def show_info(self, attr):

        	if attr == False:
        		return 'Нет'
        	else:
        		return 'Есть'


Чтобы при

Anna = Person('Anna)
Anna.something_2


Я получал не "True", а "Есть"
  • Вопрос задан
  • 125 просмотров
Подписаться 1 Простой 2 комментария
Ответ пользователя Александр К ответам на вопрос (3)
shabelski89
@shabelski89
engineer
class Person:
    def __init__(self, name):
        self.name = name
        self.something_1 = 'abc'
        self.something_2 = 123


def check_attr(obj, attr_name):
    try:
        value = obj.__getattribute__(attr_name)
        return f'{obj} имеет аттрибут - {attr_name} со значением - {value}'
    except AttributeError:
        return f'{obj} не имеет аттрибута - {attr_name}'


if __name__ == "__main__":
    p = Person(name='Alex')

    print(check_attr(p, 'something_1'))
    print(check_attr(p, 'something_2'))
    print(check_attr(p, 'something_33333'))
Ответ написан
Комментировать