iOS开发人员如何学习Python编程15-面向对象编程1

这是我参与11月更文挑战的15天,活动详情查看:2021最后一次更文挑战

面向对象编程(Object Oriented Programming),简称OOP,是一种程序设计思想。

面向过程与面向对象有什么区别?

  • 面向过程:根据业务逻辑从上到下写代码;
  • 面向对象:将数据与函数绑定到一起,进行封装。减少重复代码的重写过程。

类与对象介绍

是抽象的概念,仅仅是模板。用来描述具有相同属性和方法的对象的集合。比如:

  • 公司就可以表示成一个类。

某一个具体事物的存在,在现实世界中可以是看得见摸得着的。 比如:

  • 阿里代表了公司的中具体的一员。这就是对象。

类与对象的关系

在开发中,我们可以进行对象归类。

比如,分析班级同学公有特征归类:

option = {
    title: {
        text: '张三',
        subtext: '三年二班'
    },
    tooltip: {
        trigger: 'item',
        formatter: "{a} <br/>{b} : {c}%"
    },
    toolbox: {
        feature: {
            dataView: {readOnly: false},
            restore: {},
            saveAsImage: {}
        }
    },
 
    series: [
        {
            name:'漏斗图',
            type:'funnel',
            left: '10%',
            top: 60,
            //x2: 80,
            bottom: 60,
            width: '80%',
            // height: {totalHeight} - y - y2,
            min: 0,
            max: 100,
            minSize: '0%',
            maxSize: '100%',
            sort: 'descending',
            gap: 2,
            label: {
                show: true,
                position: 'inside'
            },
            labelLine: {
                length: 10,
                lineStyle: {
                    width: 1,
                    type: 'solid'
                }
            },
            itemStyle: {
                borderColor: '#fff',
                borderWidth: 1
            },
            emphasis: {
                label: {
                    fontSize: 20
                }
            },
            data: [
                {value: 60, name: '爱好'},
                {value: 40, name: '年级'},
                {value: 20, name: '年龄'},
                {value: 80, name: '性别'},
                {value: 100, name: '姓名'}
            ]
        }
    ]
};
复制代码

那么,我们就可以将三年二班学生公有的特征进行归类。而建立一个学生类:

option = {
    title: {
        text: '三年二班'
    },
    tooltip: {},
    series: [
        {
            type: 'graph',
            layout: 'none',
            symbolSize: 70,
            label: {
                show: true
            },
            edgeSymbol: ['circle', 'arrow'],
            edgeSymbolSize: [4, 10],
            edgeLabel: {
                fontSize: 10
            },
            data: [{
                name: '三年二班学生类',
                x: 300,
                y: 300
            }, {
                name: '张四',
                x: 800,
                y: 300
            }, {
                name: '李三',
                x: 500,
                y: 100
            }, {
                name: '王二麻子',
                x: 550,
                y: 500
            }],
            // links: [],
            links: [{
                source: 0,
                target: 1
            }, {
                source: 0,
                target: 2
            }, {
                source: 0,
                target: 3
            }],
            lineStyle: {
                opacity: 0.9,
                width: 2,
                curveness: 0.2
            }
        }
    ]
}
复制代码

类的构成

类由3个部分构成:

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对类进行操作的方法

⚠️注意: 类名通常采用驼峰式命名方式,尽量让字面意思体现出类的作用。 Python使用class关键字来定义类,其基本结构如下:

class 类名:
    pass
复制代码

Python中,可以根据已经定义的类去创建出一个个对象:

对象名 = 类名()
复制代码

定义一个完整的类:

# 定义
class 类名:
    def 方法名(self,参数):  # 类中函数:称为方法
        pass
        
# 执行
s = 类名()         # 创建对象(实例) 整个过程就是实例化
s.方法名(参数)     # 调用类中方法
复制代码

对象初始化

在类当中定义方法时,会发现系统帮我们自动创建了self参数,并且在调用对象的该方法时,也无需传入self参数。那这个self是什么?

实际上,我们需要明确self的两个概念:

  • self本身是形参;
  • self就是对象本身。
  1. __init__()称为初始化方法,也可称为构造方法。在创建对象时,会自动执行该方法,为对象的属性设置初始值: 
class Student(object):
    def __init__(self,name,age):   
        self.name = name
        self.age = age
        
    def info(self):
        print(self.name,self.age)

ls = Student("李四",18)     
ls.info()
复制代码
  1. __str__()打印输出对象变量时,同时打印自定义的内容,将自定义内容通过return关键字返回: 
class Students:
    def __init__(self):
        self.name = "李四"
        self.age = 18

    def __str__(self):
        return self.name


ls = Students()
print(ls)       # 李四
复制代码

⚠️注意: 返回值必须是字符串。

Guess you like

Origin juejin.im/post/7032453979086782501