|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原文:
- Help on class AttributeError in module builtins:
- class AttributeError(Exception)
- | Attribute not found.
- |
- | Method resolution order:
- | AttributeError
- | Exception
- | BaseException
- | object
- |
- | Methods defined here:
- |
- | __getstate__(self, /)
- | Helper for pickle.
- |
- | __init__(self, /, *args, **kwargs)
- | Initialize self. See help(type(self)) for accurate signature.
- |
- | __reduce__(self, /)
- | Helper for pickle.
- |
- | __str__(self, /)
- | Return str(self).
- |
- | ----------------------------------------------------------------------
- | Data descriptors defined here:
- |
- | name
- | attribute name
- |
- | obj
- | object
- |
- | ----------------------------------------------------------------------
- | Static methods inherited from Exception:
- |
- | __new__(*args, **kwargs) class method of builtins.Exception
- | Create and return a new object. See help(type) for accurate signature.
- |
- | ----------------------------------------------------------------------
- | Methods inherited from BaseException:
- |
- | __getattribute__(self, name, /)
- | Return getattr(self, name).
- |
- | __repr__(self, /)
- | Return repr(self).
- |
- | __setstate__(self, object, /)
- |
- | add_note(self, object, /)
- | Exception.add_note(note) --
- | add a note to the exception
- |
- | with_traceback(self, object, /)
- | Exception.with_traceback(tb) --
- | set self.__traceback__ to tb and return self.
- |
- | ----------------------------------------------------------------------
- | Data descriptors inherited from BaseException:
- |
- | __cause__
- | exception cause
- |
- | __context__
- | exception context
- |
- | __dict__
- |
- | __suppress_context__
- |
- | __traceback__
- |
- | args
复制代码
翻译:
- 模块内置类中有关属性错误(AttributeError)类的帮助:
- 类属性错误(异常)
- | 未找到属性。
- |
- | 方法解析顺序:
- | 属性错误
- | 异常
- | 基本异常
- | 对象
- |
- | 这里定义的方法:
- |
- | __getstate__(self, /)
- | pickle 的助手。
- |
- | __init__(self, /, *args, **kwargs)
- | 初始化自身。 有关准确的签名,请参见 help(type(self)) 。
- |
- | __reduce__(self, /)
- | pickle 的助手。
- |
- | __str__(self, /)
- | 返回 str(self)。
- |
- | ----------------------------------------------------------------------
- | 此处定义的数据描述符:
- |
- | 名称
- | 属性名称
- |
- | 对象
- | 对象
- |
- | ----------------------------------------------------------------------
- | 继承自 Exception 的静态方法:
- |
- | 内置函数 Exception 的 __new__(*args, **kwargs) 类方法
- | 创建并返回一个新对象。 请参见 help(type) 获取准确的签名。
- |
- | ----------------------------------------------------------------------
- | 继承自 BaseException 的方法:
- |
- | __getattribute__(self, name, /)
- | 返回 getattr(self,name)。
- |
- | __repr__(self, /)
- | 返回 repr(self)。
- |
- | __setstate__(self, object, /)
- |
- | add_note(self, object, /)
- | Exception.add_note(note) --
- | 为异常添加注释
- |
- | with_traceback(self, object, /)
- | Exception.with_traceback(tb) -- | 为异常添加注释。
- | 将 self.__traceback__ 设为 tb 并返回 self。
- |
- | ----------------------------------------------------------------------
- | 继承自 BaseException 的数据描述符:
- |
- | __cause__
- | 异常原因
- |
- | __context__
- | 异常上下文
- |
- | __dict__
- |
- | __suppress_context__
- |
- | __traceback__
- |
- | args
复制代码
当访问对象时,如果该对象没有特定的属性或方法,就会出现该异常。当对对象进行无效的属性引用或赋值时,会引发AttributeError。
1.拼写错误的属性:
- >>>class C:
- def __init__(self, name):
- self.name = name
- >>>c = C("小甲鱼")
- >>>c.age
- Traceback (most recent call last):
- File "<pyshell#18>", line 1, in <module>
- c.age
- AttributeError: 'C' object has no attribute 'age' #访问了不存在的属性
复制代码
2.对象类型错误
- >>>myage = 18
- >>>myage.spilt() #试图对整数类型进行字符串方法
- Traceback (most recent call last):
- File "<pyshell#26>", line 1, in <module>
- age.spilt()
- AttributeError: 'int' object has no attribute 'spilt'
复制代码
3.作用域错误
- >>>class C:
- name = "小甲鱼"
- _age = 18 #创建了一个私有变量_age
- >>>c = C()
- >>>c.age
- Traceback (most recent call last):
- File "<pyshell#36>", line 1, in <module>
- c.age
- AttributeError: 'C' object has no attribute 'age'
复制代码
在访问属性或方法之前,最好先检查它在对象上是否存在。你可以使用内置的hasattr()函数在访问之前检查属性是否存在。这个函数接受两个参数:对象和属性名作为字符串。如果属性存在,它返回True,否则返回False。通过在访问属性之前使用hasattr(),你可以避免AttributeError,如果属性缺失,则采取适当的操作。可以使用isinstance()函数 |
|