I am trying to do something like this:
class SomeEnum(str, Enum):
STRING_A = 'This is a string A with variable ' variable
STRING_B = 'This is a string B with variable ' variable
and use it like a template, for instance:
some_list.append(SomeEnum.STRING_A(variable))
is this even possible in Enums since it defies the purpose of Enums a bit? Or what else would you suggest instead of Enums? Thanks a lot!
CodePudding user response:
I'd say define a __call__ method along with some string formatting
class SomeEnum(str, Enum):
STRING_A = 'This is a string A with variable %s %s '
STRING_B = 'This is a string B with variable %s %s'
def __call__(self, *args):
return self % args
print(SomeEnum.STRING_A("a", "b")) # This is a string A with variable a b
print(SomeEnum.STRING_B("c", "d")) # This is a string B with variable c d
The only rule : provide the same amount of paramater, as the string expects
Dynamic formatting
class SomeEnum(str, Enum):
STRING_A = 'This is a string A with variable '
STRING_B = 'This is a string B with variable '
def __call__(self, *args):
if len(args) == 1:
return self args[0]
return self ', '.join(args[:-1]) " and " args[-1]
print(SomeEnum.STRING_A("a")) # This is a string A with variable a
print(SomeEnum.STRING_B("a", "b")) # This is a string B with variable a and b
print(SomeEnum.STRING_B("a", "b", "c")) # This is a string B with variable a, b and c
CodePudding user response:
No!. You can't do like that. It is not practical. The code you're writing cannot see intellisense. If you want to see it in public, then you can use self.
class SomeEnum:
def __init__(self, enum):
self.Enum = enum
self.STRING_A = f'This is a string A with variable {enum}'
self.STRING_B = f'This is a string B with variable {enum}'
num = 6
p1 = SomeEnum(num)
print(p1.STRING_A)
print(p1.STRING_B)
