python 为什么我得到__init__()需要1个位置参数,但给出了3个?[关闭]

a64a0gku  于 2023-06-04  发布在  Python
关注(0)|答案(4)|浏览(454)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
昨天关门了。
Improve this question
不断得到这个错误,但我遵循我的老师的指示。

这是我的.py文件![animal_shelter(1)](https://i.stack.imgur.com/w4JUz.pnganimal_shelter(2)
我能想到的办法都试过了。期待着这个结果。

dwbf0jvd

dwbf0jvd1#

Animalshelter类不接受init函数中的任何参数,您给了它一个用户名和密码。
您没有为用户名或密码指定任何参数。

shelter = AnimalShelter()

作为建设,这应该是好的。

piok6c0g

piok6c0g2#

这是因为,在类构造中,你有:__init__(self),这意味着它将自动将自己作为第一个参数,并且不会接受任何其他参数。
但是从ERROR镜像看,好像是shelter = AnimalShelter(username, password)
这意味着您要提供另外两个参数,即usernamepassword。但是构造函数不能有更多的,正如我上面所解释的。

溶胶

所以你可以做的是:

class AnimalShelter(object):
    def __init__(self, username, password):
        # do whatever you want with the username and password

或者

创建一个单独的方法来处理用户名和密码

class AnimalShelter(object):
    def __init__(self):
        pass

    def login(self, username, password):
        # do whatever you want with the username and password
        pass

然后将避难所初始化为

shelter = AnimalShelter()
shelter.login(username, password)
lx0bsm1f

lx0bsm1f3#

谢谢你提供的图片,它们有助于理解这个问题!之所以会遇到这个问题,是因为当你定义__init__()函数时,只有一个参数,即self(这是一个你必须传递给类方法的参数)。理想情况下,你应该像这样重写init()函数:

def __init__(self, username, password):
    self._username = username
    self._password = password
    self.client = MongoClient('mongodb://%s:%s@s:%d' % (username, password, nv-desktop-services.apporto.com, 31722))
    ...  # rest of your function

这个想法是,在你的Jupyter Notebook中,你传递一个参数,一个用户名和密码,它们没有被定义为AnimalShelter类的__init__()函数的参数。我假设您希望在连接到Mongo客户端时使用这些参数。

vcirk6k6

vcirk6k64#

构造函数应该像definit(self,client,database,collection)这样:self.client = blah blah so on

相关问题