Python面向对象编程01:入门类和对象 什么是面向对象编

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

正式的Python专栏第36篇,同学站住,别错过这个从0开始的文章!

前面写了文件的读取和文件处理等其他函数,里面用到了os库。

本来想分享os库,发现这个库可能对于初学者来说比较难,所以后面再等合适的时间谈谈,因为设计了很多文件系统的操作,比较偏Linux运维。

我们先看看面向对象编程吧,就是很多人口中谈到的OOP(Object-oriented Programming)

什么是面向对象编程?

我们是不是听过面向过程,拿来放在一起对比就比较好理解了。

简单来理解,面向过程就是一切用函数解决一切文件,简单粗暴!

面向对象是面向过程编程之后才出现了,没有面向对象编程很多程序还不是照样开发。

面向对象,也使用函数,但是多了一个网,这个网把一个或者多个函数,和数据关联在一起,然后称为一类事物,也就是程序中的‘类’(class)

定义类,从具体代码来感受吧!

面向对象编程,首先提出的第一个概念就是‘class’,类:

1
2
3
python复制代码#这就是一个class的定义代码:
class hello_class():
pass

然后通过class_name() 这样调用来生产对象。

代码稍微升级一下,我们看看:

1
2
3
4
5
6
7
8
9
python复制代码class hello_class():
pass

#输出类信息
print(hello_class)
print(type(hello_class))
#创建类的实例对象
print(hello_class())
print(type(hello_class()))

稍微补充一下:

print函数输出类对象的结果:通常是<’class全名‘ object at id序列号>

下面是运行结果:

屏幕快照 2021-11-16 上午8.52.25.png

这里我们加入新知识点:类实例对象 , 通常直接说,实例。

实例是class产生的对象,所有某个hello_class对象的类型(通过type函数获取)都必定是hello_class。

多个类和对象的观察

看完一个类,我们再看看两个类的对比,结果也是一致的。

下面是两个类的定义和生成对象的代码展示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
python复制代码#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello


class student(object):
“”“学委补充一下:__init___ 函数为类的初始化函数,在创建类对象实例的时候这个函数会被调用。”“”
def __init__(self):
print("hello, I am student")


class programmer(object):
def __init__(self):
print("hello, I am programmer")


class student(object):
def __init__(self):
print("hello, I am student")


class programmer(object):
def __init__(self):
print("hello, I am programmer")


s1 = student
print(s1)
p1 = programmer
print(p1)
s11 = student
print(s11)
p11 = programmer
print(p11)

print("*" * 16)
# 创建对象
s2 = student()
print(s2)
p2 = programmer()
print(p2)

# 创建对象
s3 = student()
print(s3)
p3 = programmer()
print(p3)

稍微解释一下:

s1 和 p1 这两个变量打印输出结果是‘class’类型的。

s11 和 p11 这两个变量打印输出结果是‘class’类型的,但是s1跟s11,p1跟p11 是不变的。

s2 和 p2 这两个变量打印输出结果是’object’类型的。

s3 和 p3 这两个变量打印输出结果是’object’类型的。\

下面是运行结果:

屏幕快照 2021-11-16 上午9.01.31.png

初始化函数被调用了打印了对象信息。

到这里,大家应该都能知道class和object区别了吧

类: 描述了函数和属性的固定关系
(类实例)对象: 基于这种固定关系的一个活生生的个体,它的id是变化的。

补充一下类的属性(数据部分)

学委定义了一个student类,并创建了两个学生对象。

直接复制运行下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
ruby复制代码#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello


class student(object):
def __init__(self, name):
self.name = name

def get_name(self):
return self.name

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

def study(self):
print(f"{self.name} : 好好学习,天天向上!")



s1= student("小白")
print(s1)
print(s1.get_name())
print(s1.study())

s2 = student("学委的学生粉丝:哈哈哈")
print(s2)
print(s2.get_name())
print(s2.study())

我们看到他们的id总是不同的(运行几次看看)。

然后每个学生都有一个name属性(携带姓名数据),和三个函数属性(分别用来获取姓名,改名,学习)。

然后我们调用了每个学生的study函数,输出了各自的学习状态。

屏幕快照 2021-11-16 上午9.15.25.png

总结

Python语言的简约设计,使得面向对象编程非常简单,轻松就定义和和获取对象了。

上面的代码非常简单,但是可以很好的感受到类和对象的呈现,多练习。

对了,喜欢Python的朋友,请关注学委的 Python基础专栏 or Python入门到精通大专栏

持续学习持续开发,我是雷学委!

编程很有趣,关键是把技术搞透彻讲明白。

欢迎关注微信,点赞支持收藏!

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%