*args
в def __init__(self, *args):
приведет к self.args
для сохранения кортежа, поэтому первый оператор if всегда будет False
.Если вы хотите, чтобы ваш код работал, вы должны переписать его как:
class MyClass:
def __init__(self, *args):
self.args = args
def test_meth(self):
if self.args == ('ti',):
print('ti')
elif len(self.args) == 1 and len(self.args[0]) == 1:
print('it is a list with len 1 values')
else:
print('full list')
my_class = MyClass('ti')
my_class.test_meth()
или с более универсальным (работает с любым итерируемым args
):
class MyClass:
def __init__(self, *args):
self.args = args
def test_meth(self):
if len(self.args) == 1 and self.args[0] == 'ti':
print('ti')
elif len(self.args) == 1 and len(self.args[0]) == 1:
print('it is a list with len 1 values')
else:
print('full list')
my_class = MyClass('ti')
my_class.test_meth()