**kw
дает список всех аргументов ключевого слова. Установив переменную self.kw
в kw
в __init__
, вы сможете использовать ключевые слова позже.
И ваш цикл for в __init__
перезаписывает self.value
для каждого значения. Чтобы решить это, вы можете составить self.value список и добавить к нему все значения:
class MyClass:
def __init__(self, **kw):
self.kw = kw # this sets the attribute kw of self to kw.
if kw is not None:
self.values = []
for value in kw.items():
self.values.append(value)
def showdata(self):
if values is not None:
for value in values:
print("value: " + value)
obj1 = MyClass(A = 237, B = 83, C = 182218)
print(obj1.showdata())
Из-за того, что вы не используете имена ключевых слов, вы можете изменить **kw
на *args
и установить вместо self.values
на args
:
def __init__(self, *args):
self.values = values # this does the same thing as the code above but with much less code
Если вы собираетесь использовать этот подход, вы должны изменить obj1 = MyClass(A = 237, B = 83, C = 182218)
на obj1 = MyClass(237, 83, 182218)