у меня есть класс Python с методом, который должен принимать аргументы и ключевые аргументы таким образомфункция питон * арг и ** kwargs с другими уточненными именованными аргументами
class plot:
def __init__(self, x, y):
self.x = x
self.y = y
def set_axis(self, *args, xlabel="x", ylabel="y", **kwargs):
for arg in args:
<do something>
for key in kwargs:
<do somethng else>
при вызове:
plt = plot(x, y)
plt.set_axis("test1", "test2", xlabel="new_x", my_kwarg="test3")
Я получаю ошибку: TypeError: set_axis() got multiple values for keyword argument 'xlabel'
Во всяком случае, если я изложу свой метод как
class plot:
def __init__(self, x, y):
self.x = x
self.y = y
def set_axis(self, xlabel="x", ylabel="y", *args, **kwargs):
for arg in args:
<do something>
for key in kwargs:
<do somethng else>
и называют:
plt = plot(x, y)
plt.set_axis(xlabel="new_x", "test1", "test2", my_kwarg="test3")
я SyntaxError: non-keyword arg after keyword arg
, как я ожидал. Что не так с первым случаем? Как мне сообщить моему методу принять любой аргумент пользователя и аргумент ключевого слова, отличные от стандартных? (Надеюсь, что мой вопрос достаточно ясно)
Какую версию Python вы используете? Первый класс, который вы перечисляете, не анализируется в Python 2.7.3, потому что '* args' сменяется именем параметра в определении' set_axis'. – phant0m