You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类实例化报错:缺失必填位置参数‘object’该如何解决?

问题根源&解决方案

你遇到的问题核心是把类的定义写成了函数——你用了def来定义COOKIEBOT2000,但你实际想创建的是一个类,应该用class关键字。这就导致Python把COOKIEBOT2000当成了普通函数,而函数里的第一个参数object就变成了必填的位置参数,所以实例化时才会报错。

修正步骤&完整代码

  1. 把def替换成class,修正类的定义语法
  2. 修复Clicker方法里的逻辑错误(字符串不能调用click())
  3. 补充driver参数的传递(否则会报NameError)

修正后的代码如下:

from selenium import webdriver  # 假设你用的是selenium,需要先导入

class COOKIEBOT2000:
    def __init__(self, driver, upgrade=1, click=1, prints=0):
        self.driver = driver  # 把driver保存为实例属性
        self.upgrade = upgrade
        self.click = click
        self.prints = prints

    def Clicker(self):
        if self.click == 1:
            # 变量名改成big_cookie,避免和方法名Clicker混淆
            big_cookie = self.driver.find_element_by_id("bigCookie")
            big_cookie.click()
        
        if self.prints == 1:
            # 先获取元素文本,再处理,不要覆盖元素变量
            cookie_element = self.driver.find_element_by_id("cookies")
            cookie_text = cookie_element.text
            money = cookie_text.split("\n")[0].split(" ")[0]
            try:
                money = int(money)
                print(money)
            except ValueError:
                # 处理文本格式异常的情况,比如带逗号的数字
                money = int(money.replace(",", ""))
                print(money)

# 使用示例
driver = webdriver.Chrome()  # 初始化你的浏览器驱动
driver.get("https://orteil.dashnet.org/cookieclicker/")  # 打开Cookie Clicker页面
COOKIEBOT = COOKIEBOT2000(driver)
COOKIEBOT.Clicker()

额外说明

  • Python 3里类默认继承自object,不需要显式写class COOKIEBOT2000(object):,当然写了也能正常运行,但现在更推荐简洁的写法。
  • 你原来的prints分支里,先调用click.click()再获取文本是逻辑错误——因为获取文本后变量变成了字符串,再调用click()会报错,所以要先获取元素文本再处理。
  • 加入了异常处理,避免cookie数量带逗号(比如10,000)时转int失败的问题。

内容的提问来源于stack exchange,提问作者Mr. Blue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:46:17