Я пытаюсь сделать контроль над версиями продуктов в сценариях Python по определенной причине, но я не мог понять, как это сделать элегантным способом - пожалуйста, помогите.
В настоящее время я делаю что-то вроде ниже. Однако при сохранении содержимого версии сценарии трудно поддерживать.
class Product(object):
def __init__(client):
self.version = client.version # get client version from another module
def function():
if self.version == '1.0':
print('for version 1.0')
elif self.version == '2.0':
print('for version 2.0')
else:
print(f'function not support {self.version}')
Поэтому я хочу сделать что-то вроде ниже, чтобы отделить функции с тем же именем.
class Product(object):
def __init__(client):
self.version = client.version # get client version from another module
def function():
print('for version 1.0')
def function():
print('for version 2.0')
Я думал об использовании декоратора, чтобы добиться этого:
class Product(object):
def __init__(client):
self.version = client.version # get client version from another module
@version(1.0)
def function():
print('for version 1.0')
@version(2.0)
def function():
print('for version 2.0')
Тем не менее, я не смог понять, как... похоже, что декоратор не может выполнить эту операцию или я просто не понимаю, как это сделать.
Есть ли элегантный способ сделать это?