img = self.transform(img) TypeError: __init__() takes 1 positional argument but 2 were given
时间: 2023-12-05 17:31:57 浏览: 264
这个错误是因为在调用self.transform(img)时传入了两个参数,但是transforms类的__init__()函数只接受一个位置参数。根据给出的引用内容,transforms.Compose是一个transforms的组合类,它接受一个transforms列表作为参数。而transforms.ToTensor()和transforms.Normalize()都是transforms类的实例,它们被包含在transforms.Compose中。所以,应该将transforms.ToTensor()和transforms.Normalize()放入一个列表中,然后再将这个列表作为参数传递给transforms.Compose。
相关问题
self.child = Child(self.serial) TypeError: __init__() takes 1 positional argument but 2 were given
这个错误通常是由于在实例化Child类时,传递了多余的参数导致的。根据错误提示信息,可以看到Child类的构造函数只接受一个参数,但是在实例化Child类时,却传递了两个参数,因此会出现这个错误。
解决这个问题的方法是检查实例化Child类时传递的参数,确保只传递一个参数。如果你确定只传递了一个参数,那么可以检查Child类的构造函数是否正确定义,确保只接受一个参数。
以下是一个示例代码,演示了如何正确地将串口对象传递给Child类:
```python
import serial
class Main:
def __init__(self):
self.serial = serial.Serial('COM1', 9600)
self.child = Child(self.serial) # 将串口对象传递给Child类的构造函数
class Child:
def __init__(self, serial):
self.serial = serial
def read_data(self):
data = self.serial.read()
return data
```
在上面的代码中,Main类的构造函数中创建了一个串口对象,并将其作为参数传递给了Child类的构造函数。注意Child类的构造函数只接受一个参数,即串口对象serial。在Child类的方法中,使用了保存在self.serial属性中的串口对象进行读取操作。
TypeError: __init__() takes 1 positional argument but 2 were given
这个错误通常发生在你在实例化一个类的时候,传递了多余的参数。例如,如果你的类定义如下:
```
class MyClass:
def __init__(self, arg1):
self.arg1 = arg1
```
但是你实例化这个类的时候传递了两个参数:
```
my_object = MyClass(arg1_value, arg2_value)
```
那么就会出现 "TypeError: __init__() takes 1 positional argument but 2 were given" 的错误。在这个例子中,正确的实例化方式应该是:
```
my_object = MyClass(arg1_value)
```
请检查你的代码,确保你在实例化类的时候传递了正确的参数数量。如果你还有疑问,请提供更多的代码和错误信息,我会尽力帮助你解决问题。
阅读全文