Я пытаюсь сделать контроль версий продукта в скриптах 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')
Однако мне не удалось понять, как ... кажется, что декоратор не может выполнить такую операцию, или я просто не понимаю, как это сделать.
Есть ли какой-нибудь элегантный способ сделать это?