Python类和对象_调试与术语
一,调试
1.当我们开始使用对象的时候,你就容易遇到一些新的异常。如果你试图读取一个不存在的属性,就会得到一个属性错误:
>>> p = Point()
>>> p.x = 3.0
>>> p.y = 4.0
>>> p.z #没有声明,就直接读取属性p.z,会报错属性错误。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Point' object has no attribute 'z'
2.如果不确定一个对象是什么类型,可以使用type【问】一下:
>>> type(p)
<class '__main__.Point'>
3.还可以用 isinstance 函数来检查一下一个对象是否为某一个类的实例:
>>> isinstance(p, Point)
True
>>> isinstance(p, point)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'point' is not defined
4.如果不确定某一对象是否有一个特定的属性,可以用内置函数 hasattr:
>>> hasattr(p, 'x')
True
>>> hasattr(p, 'j')
False
hasattr函数的第一个参数可以是任意一个对象;第二个参数是一个字符串,就是要判断是否存在的属性名字。
5.用 try 语句也可以试验一个对象是否有你需要的属性:
>>> try:
... x = p.x
... except AttributeError:
... x = 0
...
这样写一些处理不同类型变量的函数就更容易了。
二,术语
类: 用户定义的类型。一个类的声明建立了一个新的类的对象。
类的对象: 包含了用户自定义类型相关信息的一个对象。可以用于创建类的一个实例。
实例: 索引某一个类的一个对象。
实例化: 创建一个新的对象。
属性:一个对象内附属的数值的名字
内嵌对象: 一个对象作为属性存储在另一个对象内。
浅复制: 复制一个对象中除了内嵌对象之外的所有引用;通过 copy 模块的 copy 函数来实现。
深复制: 复制一个对象的所有内容,包括内嵌对象,以及内嵌对象中的所有内嵌对象等等;通过 copy 模块的 deepcopy 函数来实现。
类图: 一种图解,用于展示类与类中的属性以及属性的值。
结束。