Ten wyjątek również zostanie zgłoszony za każdym razem, gdy funkcja została wywołana za pomocą kombinacji keyword argumentsi args,kwargs
Przykład:
def function(a, b, c, *args, **kwargs):
print(f"a: {a}, b: {b}, c: {c}, args: {args}, kwargs: {kwargs}")
function(a=1, b=2, c=3, *(4,))
I wzrośnie:
TypeError Traceback (most recent call last)
<ipython-input-4-1dcb84605fe5> in <module>
----> 1 function(a=1, b=2, c=3, *(4,))
TypeError: function() got multiple values for argument 'a'
A także stanie się to bardziej skomplikowane, gdy użyjesz go niewłaściwie w dziedzictwie . więc uważaj na te rzeczy!
1- Wywołanie funkcji za pomocą keyword argumentsi args:
class A:
def __init__(self, a, b, *args, **kwargs):
self.a = a
self.b = b
class B(A):
def __init__(self, *args, **kwargs):
a = 1
b = 2
super(B, self).__init__(a=a, b=b, *args, **kwargs)
B(3, c=2)
Wyjątek:
TypeError Traceback (most recent call last)
<ipython-input-5-17e0c66a5a95> in <module>
11 super(B, self).__init__(a=a, b=b, *args, **kwargs)
12
---> 13 B(3, c=2)
<ipython-input-5-17e0c66a5a95> in __init__(self, *args, **kwargs)
9 a = 1
10 b = 2
---> 11 super(B, self).__init__(a=a, b=b, *args, **kwargs)
12
13 B(3, c=2)
TypeError: __init__() got multiple values for argument 'a'
2- Wywołanie funkcji z keyword argumentsi kwargsktóra zawiera słowa kluczowe argumenty za:
class A:
def __init__(self, a, b, *args, **kwargs):
self.a = a
self.b = b
class B(A):
def __init__(self, *args, **kwargs):
a = 1
b = 2
super(B, self).__init__(a=a, b=b, *args, **kwargs)
B(**{'a': 2})
Wyjątek:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-c465f5581810> in <module>
11 super(B, self).__init__(a=a, b=b, *args, **kwargs)
12
---> 13 B(**{'a': 2})
<ipython-input-7-c465f5581810> in __init__(self, *args, **kwargs)
9 a = 1
10 b = 2
---> 11 super(B, self).__init__(a=a, b=b, *args, **kwargs)
12
13 B(**{'a': 2})
TypeError: __init__() got multiple values for keyword argument 'a'
Horizontol_drawboxfunkcji? Jeśli zaczyna się odfillBox, to jest to błąd (przypisywany raz argumentem pozycyjnym, a drugi argumentowi słowem kluczowemu).