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

子类继承父类调用父类方法报错AttributeError,求解决方法

问题分析与解决:子类调用父类方法时出现AttributeError错误

我定义了继承自BaseClient的Client父类,又创建了继承Client的Address子类,期望复用父类已实现的功能,但调用父类方法时出现错误。

代码示例

from sr import BaseClient
class Client(BaseClient):
    def __init__(self, credentials=None):
        ....
    def _request(self,path: str, params):
         pass


class Address(Client):
   def get_address(self, **kwargs):
       return self._request('path', kwargs)

测试代码

import pytest
from .... import Addresses

def test_get_address():
    res = Addresses.get_address({'query': 'some',.....other here})

错误信息

FAILED tests/test_api.py::test_get_addresses - AttributeError: 'dict' object has no attribute '_request'

问题原因与修复方案

错误原因

你直接用类名调用实例方法get_address,还传入了一个字典作为第一个参数。Python里实例方法默认第一个参数是self(指向类的实例对象),这里你传的字典被当成了self,所以调用self._request时,实际是在对字典对象调用不存在的_request方法,必然报错。

修复步骤

  1. 先实例化Addresses类:
    addr = Addresses(credentials=...)  # 根据Client的__init__参数传入必要的凭据
    
  2. 调用实例方法时,用关键字参数传递参数(因为get_address定义的是**kwargs):
    res = addr.get_address(query='some', ...)
    
    或者如果要传字典,用**解包:
    res = addr.get_address(**{'query': 'some', ...})
    

内容的提问来源于stack exchange,提问作者rai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:50:40