(接DAY43)

九、面向对象

面向对象有3大特征:封装、继承、多态

面向对象技术简介

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 方法:类中定义的函数。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。

Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。

对象可以包含任意数量和类型的数据。

十、类

类(class)用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

定义类

语法格式:

class 类名(父类名):
    def 函数名(self, 形参):
        函数体
        return 返回值
  • class:是定义类的关键词
  • 类名(父类名):要符合标识符规范,一般首字母大写,父类名可以省略
  • 类由函数和变量组成,他们是类的成员,变量成为数据成员(实例属性或实例变量)

类的实例化

类对象支持两种操作:属性引用和实例化。
属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name
类被定义后,可以通过类来创建一个或多个具体的对象,这个过程称为类的实例化。

类的使用

实例化名.变量名(数据成员)
实例化名.函数名

构造函数

在定义类时,可以定义一个构造函数,用于类实例化时初始化相关数据。
类有一个名为__init__()的特殊方法,类的实例化操作会自动调用__init__()方法,该方法可以有参数。
语法:

def __init__(self,形参):
    函数体

两种构造函数的差异:

Snipaste_2022-08-01_16-06-06.png

类的封装

封装就是定义类
示例:

class Person:
    # 构造函数
    def __init__(self, n, a, s, j, g):
        self.name = n
        self.age = a
        self.sex = s
        self.job = j
        self.sal = g
        print('构造函数初始化完成')

    # 自定义函数
    def play(self):
        print(self.name, '正在玩游戏')

    def show(self):
        print(f'我是{self.name},{self.sex},今年{self.age}岁,我的职位是{self.job},我的薪资是{self.sal}元。')

    # get、set自定义函数
    def get_name(self):
        return self.name

    def set_name(self, n):
        self.name = n


obj = Person('张三', 18, '男', '经理', 879561.15)
obj.show()
obj.set_name('李四')
obj.show()

示例输出:

构造函数初始化完成
我是张三,男,今年18岁,我的职位是经理,我的薪资是879561.15元。
我是李四,男,今年18岁,我的职位是经理,我的薪资是879561.15元。

标签: 达内, 软件测试, Python

分类: 个人日志, 软件测试学习, Python, 学点技术

添加新评论