面向对象

杂七杂八

API(application programming Interface)即应用程序接口

hasattr()函数是Python内置函数之一,用于判断对象是否具有指定的属性或方法。它接受两个参数:对象和属性或方法的名称。函数返回一个布尔值,如果对象具有指定的属性或方法,则返回True,否则返回False

面向对象

面向对象编程:把一组数据和处理数据的方法组成对象,把行为相同的对象归纳为,通过封装隐藏对象的内部细节,通过继承实现类的特化和泛化,通过多态实现基于对象类型的动态分派。

如果直接打印对象的话,输出的是对象在内存中的地址,也就是说我们定义的变量其实保存的是一个对象在内存中的逻辑地址。

调用方法

  • 通过类-方法进行调用:Student.play(stu1)
  • 通过对象-方法来进行调用:stu1.play()

初始化方法,能够完成对对象内存的初始化操作,同时完成对属性赋初始值的操作,__init__

魔术方法

在Python中,以两个下划线__(读作“dunder”)开头和结尾的方法通常都是有特殊用途和意义的方法,我们一般称之为魔术方法魔法方法

如果我们在打印对象的时候不希望看到对象的地址而是看到我们自定义的信息,可以通过在类中放置__repr__魔术方法来做到,该方法返回的字符串就是用print函数打印对象的时候会显示的内容

Python为动态语言,我们可以在使用对象时 动态地 为对象添加属性;因此如果想要限制对象的属性,我们可以使用__slots__魔法来指定,例如:__slots__ = ('name', 'age')

getattribute()会在调用类的属性时先调用该方法,为了避免陷入无限递归,访问他的属性时,最好使用基类方法来设置属性,使用super().__getattribute__(attr)object.__getattribute__(self,attr)均可。

修饰符

python中@符号也有着重要的作用:一个是表示修饰符,另一个则是表示矩阵乘法(不常用)

用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰;

出现在函数定义的前一行,不允许和函数定义在同一行。

一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西(如果返回不是一个可调用的对象那么会报错)。示例代码:

#Example 1
def test(func):
    print("a")
    return func()
    
@test     #从这里可以看出@test等价于 test(xxx())
def xxx():
    print('Hello world!')

通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号,也就是他相当于可以等价于该类的属性,可以直接self.方法名 来进行访问。 而要想实现修改 area 属性的值,还需要为 area 属性添加 setter 方法,就需要用到 setter 装饰器,


   转载规则


《面向对象》 CHQ 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录