Максим Лебедев
Знаток
(385)
2 месяца назад
1. Словарь (рекомендуется):
classes = {
"палка": type("palca", (), {"name": 'stik'}),
"дерево": type("derevo", (), {"name": 'wood'}),
"камень": type("kamien", (), {"name": "stone"})
}
x = "палка"
if x in classes:
print(classes[x].name)
2. globals() (с осторожностью):
class palca:
name = 'stik'
class derevo:
name = 'wood'
class kamien:
name = "stone"
x = "палка"
if x in globals() and hasattr(globals()[x], 'name'):
print(globals()[x].name)
3. eval() (не использовать!):
class palca:
name = 'stik'
class derevo:
name = 'wood'
class kamien:
name = "stone"
x = "палка"
if x in globals() and hasattr(eval(x), 'name'):
print(eval(x).name)
Объяснение (очень кратко):
Словарь: сопоставляет имя переменной с классом, доступ к имени через classes[x].name.
globals(): Ищет класс в глобальной области видимости, проверяет наличие name, выводит name.
eval(): Выполняет строку как код (опасен!).
Какой выбрать?
Словарь (первый вариант) - лучший по безопасности и читаемости.
globals() - используйте с осторожностью.
eval() - НИКОГДА!
((Сделано с использованием чата гпт))
Николай МинаевМастер (1123)
2 месяца назад
сможете объяснить что означают слова в этом участке кода?
classes = {
"палка": type("palca", (), {"name": 'stik'}),
"дерево": type("derevo", (), {"name": 'wood'}),
"камень": type("kamien", (), {"name": "stone"})
}
х = "палка"
сlass палка:
name = 'stik'
def menu():
if x == "палка":
print( палка.name )
print(menu())