属性

在编程的过程中经常会使用x.y的表达式,我把任何跟在点号之后的名称都称为属性。所以表达式x.y中,yx的一个属性。

类有属性,对象也有属性。

类属性

类属性的定义

直接在类中定义的变量(与class语句只有一个缩进),就是类属性。

案例:

Point类创建一个name属性用来表示点类的名称。

class Point:
    """
    表示平面坐标系中的一个点
    """
    name = '点'

类属性的访问

类属性直接通过类和对象以句点法访问,语法格式如下:

类.类属性名
对象.类属性名

案例:

# 接上面的代码
>>> print(Point.name)  # 直接通过类名访问类属性
点
>>> point=Point()  # 创建一个实例
>>> print(point.name)     # 通过对象访问类属性
点

注意:如果不存在的属性则会抛出异常

>>> print(Point.a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'Point' has no attribute 'a'

对象属性

对象属性的定义

对象属性一般定义在构造方法中,详见下面构造方法一节中。

也可以通过句点法对象.对象属性以赋值的方式直接定义对象属性。

案例:

平面坐标系中的每个点都有x坐标和y坐标,通过类Point创建一个对象表示点(x=1,y=2)

>>> point = Point()
# 通过赋值直接定义对象属性
>>> point.x = 1
>>> point.y = 2

对象属性的访问

通过句点法对象.对象属性可以访问对象属性。

案例:

访问上面案例中point的x坐标和y坐标

>>> print(point.x)
1
>>> print(point.y)
2

访问对象属性时,首先会检查对象是否拥有此属性,如果没有则去创建对象的类中查找有没有同名的类属性,如果有则返回,如果都找不到则抛出AttributeError的异常

posted @ 2022-08-29 13:57  python心蓝  阅读(162)  评论(0编辑  收藏  举报