+ 4
Passing lists as parameters is failing somehow.
This sample code illustrates a problem. I try to pass two lists as arguments to a function. Here is the error: result = ex.Total([1,2,3], [4,5,6]) TypeError: Total() missing 1 required positional argument: 'nums2' class Example: def Total(self, nums1, nums2) -> float: sum = 0 for x in (nums1 + nums2): sum += x return x ex = Example result = ex.Total([1,2,3], [4,5,6])
5 ответов
+ 4
Jerry Hobby
Assuming you know the difference between static methods and instance methods, the 'self' argument signifies that the method is an instance method. If a method inside a class does not have the 'self' argument, that means it is a static method.
On the second-last line, did you want to create an instance of the Example class? Because currently in your code, you assigning to `ex` the class Example. So `ex` is basically an alias for Example. As `ex` is a class and not an instance of a class, calling any method on `ex` which call it as if it is a static method, i.e., the argument to 'self' won't be passed. Hence the error 'missing 1 required positional argument'.
If you wanted to create an instance of Example, you need to do
`ex = Example()`
Then if you call ex.Total([1, 2, 3], [4 5, 6]), there will be no error as now the 'self' argument would be passed.
+ 3
Remove self from function Total...
+ 2
@Jayakrishna🇮🇳 I thought all functions within classes had to have "self". Your solution works. Thank you. But I'm confused about why I don't need "Self" there.
+ 2
@XXX Thank you for that clarification. It is perfectly clear now. I appreciate the time you took to articulate that.
0
это ерунда