学习面向对象,首先你得有一个对象!
开玩笑的。嘻嘻。
目录
一. 引入
面向过程 | 面向对象 | |
---|---|---|
区别 | 十五比较简单,可以用线性的思维解决 | 事务比较复杂,使用简单的线性思维无法解决 |
共同点 | 面向过程和面向对象都是解决实际问题的一种思维方式 | |
二者相辅相成,并不是对立的 解决复杂问题,通过面向对象的方式便于我们从宏观上把握事务之间的复杂的联系、方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理 |
举个栗子:
泡一碗浓香可口的康师傅红烧牛肉面(康师傅打钱),正常我们的思维都是
1.撕开盖子
2.取出调料包
3.撒在面饼上
4.倒水泡面
5.盖上盖子
以上的顺序,即是线性思维,就是面向过程方式
但是还是有个老哥比如说我就比较奇怪,我从来不自己泡红烧牛肉面,我要我的大学室友帮我泡,然鹅我的大学室友也愿意帮我泡(这一步无关紧要),那么我的大学室友就是我的对象♂。
那么这就是一个面向对象的过程,可见即使我选择了面向对象,但是我的对象的泡面操作,仍然是按照以上列表顺序进行的。所以具体到微观操作,仍然使用面向过程方式。
二. 前言
最近发现身边有小伙伴学习总是抱着书上的概念啃来啃去,比如,面向对象的定义:面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。这并不是一个有头发的人可以理解的话语,所以有头发的聪明人都来看我的博客了!快速理解!
三. 类与对象
3.1概念
- 数据类型
- 不同数据类型属于不同的类
- 使用内置函数查看数据类型
# csdn:一个兴趣使然的程序猿罢了 print(type(666)) <class 'int'> print(type(696)) <class 'int'> print(type(969)) <class 'int'>
- 对象
- 666、696、969都是int类之下包含的相似的不同个例,这个个例(666、696、969)专业术语称之为实例或者对象
3.2定义Python中的类
3.2.1类的创建
- 创建类的语法
- clas 类名 :
- 类的组成
- 类属性
- 实例方法
- 类方法
举例:
# csdn:一个兴趣使然的程序猿罢了
class Student:#student作为类的名称有由一个或多个单词组成,每个单词的首字母大写,其余小写
pass#pass做占位使用
那么小伙伴们一定很奇怪,定义了Student类型有什么用呢,我能知道什么呢?我需要知道什么呢?
那么我们通过代码了解:
print(id(Student))>>>>>>>>>>>>>> 2269766192144 print(type(Student))>>>>>>>>>>>> <class 'type'> print(Student)>>>>>>>>>>>>>>>>>> <class '__main__.Student'>
显然,Student有地址有类型等等,那么我们看看类的组成
3.2.2类的组成
在学习定义类之前,我们通常会先学习基础语法中的函数,比如函数内部定义的变量,我们一般称为局部变量等等,定义类我们一般可以进行类比,但也要知道两者的不同:
# csdn:一个兴趣使然的程序猿罢了
class Student:#student作为类的名称有由一个或多个单词组成,每个单词的首字母大写,其余小写
native_palce='南京'#直接写在类里的变量,我们称为类属性
#实例方法
def mulx(self):#
print('乘法')
在类的内部定义的变量不再是局部变量,而是类属性;
在类的内部定义的函数不再是函数,而是实例方法。
#CSDN:一个兴趣使然的程序猿罢了
#静态方法
@staticmethod
def method():
print('我使用了staticmethod进行修饰,所以我是静态方法喔!')
#类方法
@classmethod
def cm(cls):
print('我使用了类方法,因为我使用了classmethod进行修饰')
def __init__(self,name,age):
self.name=name
#self.name 称为实体属性,进行了一个赋值的操作,将局部变量的name的值赋给实体属性
self.age=age
3.2.3对象的创建
- 对象的创建又称为类的实例化,对象包括属性和方法
- 语法:
- 实例名=类名() stu=Student()
- 意义:有了实例,就可以调用类中的内容
举个栗子:
现在我们定义一只小海龟的属性 和它具有的一些操作(方法):
class Turtle:
#属性
color='green'
weight=10
legs=4
shell=True
mouth='big'
#方法
def climb(self):
print('我正在努力的往上爬啊爬')
def run(self):
print('开了跨之后!我健步如飞')
def hit(self):
print('这一拳二十年的功夫,你挡得住吗?!')
def eat(self):
print('吃饭就好好吃饭,不可以玩手机哦')
def sleep(self):
print('遇到困难睡大觉!')
#输出
>>> tt=Turtle()
>>> tt.sleep()
遇到困难睡大觉!
大家有没有觉得最后两行很熟悉,对,就类似我们学习基础语法时的各个数据类型的操作方法
例如我们现在有个list类型的ls变量,他的内部排列着十以内的正整数,我们可以用ls.append()、ls.sort()等去操作这个列表,这就是类的方法