子类继承父类调用父类方法报错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方法,必然报错。
修复步骤
- 先实例化Addresses类:
addr = Addresses(credentials=...) # 根据Client的__init__参数传入必要的凭据 - 调用实例方法时,用关键字参数传递参数(因为
get_address定义的是**kwargs):
或者如果要传字典,用res = addr.get_address(query='some', ...)**解包:res = addr.get_address(**{'query': 'some', ...})
内容的提问来源于stack exchange,提问作者rai
相关产品推荐
相关产品推荐

