【Python】python的面向对象思想

python是一门面向对象的语言,其中最为重要的概念就是类与对象:

类和对象:

类:对一类事物的抽象概念(模型),不是真实存在,描述了该类事物共同的特征和行为。

实例对象:类的具体个体,是该类事物的具体表现,是真实存在的

类名规范:

  • 符合标识符的命名规范:英文数字加下划线,不能够以数字开头。
  • 命名风格:大驼峰

属性

属性是用来描述事物的特征的。

属性分为类属性和实例属性:

  • 类属性:这一类事物所具有的共同特征
    • 定义:在类中直接定义的变量
    • 调用:直接通过类名和实例对象都能够调用
  • 实例属性:对象所具有的独有属性
    • 定义:对象名.属性名
    • 调用:对象名.属性名。只能够通过对象来调用

方法

实例方法

  • 定义:方法中第一个参数为self的方法,哪一个对象调用该方法,self就代表这个对象
  • 调用:只能够通过实例对象来调用这个方法

类方法

  • 定义:使用 @classmethod 修饰的方法,第一个参数为 cls。方法内部不使用实例属性。
  • 调用:能够使用类和对象来调用这个方法

静态方法

  • 定义:使用 @staticmethod 修饰的方法,方法内部不使用类属性和实例属性。
  • 调用:通过类直接调用这个方法

三者的区别

  • 实例方法中因为有self参数,所以一般用于对类对象所拥有的方法、属性等的调用
  • 类方法中有cls参数,一般用于对类属性,类方法的调用。不可调用对象属性和方法
  • 静态方法中没有cls,self参数,一般用来存放与类、对象完全无关的方法

_ _ init_ _方法

初始化方法,在类被调用时会自动执行该方法

class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age
        
xiaoming = Student('xiaoming','19')

类定义的两种形式:

  1. class(object) :python 2 语法,继承object
  2. class student :python 3语法,与上一种定义格式一样

类的继承

继承的好处:通过继承,子类能够获得父类的所有公有方法和属性,可以提高代码的可复用性。

语法:class Cat(Animal)

父类方法重写

子类中有一个和父类相同名称的方法,在子类中方法会覆盖掉继承父类的同名方法。

调用顺序:优先调用自己类中的方法,如果在自己类中没有找到,就会去父类中查找是否有该方法。

如何调用已经被重写的父类方法?

​ 使用super()能够调用重名的父类方法。

多继承

一个类继承多个父类,能够继承所有父类的公有方法和公有属性。

调用顺序:

  • 如果两个父类都定义了同名的一个方法,子类也重写了该方法,那么优先调用子类的该重写方法。
  • 如果子类没有重写该方法,那么先调用写在前面的那个父类中对应的该重写方法

动态设置属性:

  • setattr(类名,属性名,属性值):动态设置类中对应的属性为传入的属性值,用于不确定属性名的场景
  • getattr(类名,属性名,默认值):如果在类中未找到该属性,则返回默认值。
    • 一般用于不确定属性名的场景,例如属性名为列表中的值。
  • delattr(类名,属性名):删除类中对应的属性,和del相似,但可用于不确定属性名的删除。
  • hasattr(类名、属性名)

最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。


版权声明:本文为qq_34659777原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。