Быть может лучше принимать ещё один аргумент при вызове?
class Color:
def __init__(self):
self.red = '\033[91m'
self.green = '\033[92m'
self.blue = '\033[94m'
self.cyan = '\033[96m'
self.white = '\033[97m'
self.yellow = '\033[93m'
self.magenta = '\033[95m'
self.grey = '\033[90m'
self.black = '\033[90m'
self.default = '\033[99m'
self.end_color = '\033[0m'
def color_print(self, data, color):
print(getattr(self, color) + data + self.end_color)
obj = Color()
obj.color_print('Текст красного цвета', 'red')
obj.color_print('Текст зелёного цвета', 'green')
obj.color_print('Текст синего цвета', 'blue')
Реализация очень топорная, но как вариант.
Если очень нужно генерировать методы классов в реальном времени, придётся лезть в мета-программирование.
Пример решения схожей задачи:
https://stackoverflow.com/questions/13194180/dynam...