前言
对于面向对象的学习,笔者在学习的时候并不能弄清楚它的意义,经过后续的学习和整理归纳,现在对面向对象的意义作出一个浅显略显低级的解释,通俗的来讲,面向对象编程就是将原本的事物用它更贴近于人类生活的方式借助编程的方式书写出来。
本文中主要讲解四个方面。
1、理解面向对象
2、类和对象
3、添加和获取对象属性
4、魔法方法
提示:以下是本篇文章正文内容,下面案例可供参考
一、理解面向对象
如果还没有接触过面向对象的小白可以理解为面向对象就是为了化简代码量而出现的高级编程方法。
二、类和对象
类和对象的关系:用类去创建一个对象(在Python中创建对象的过程也可以称为实例化)
想象一下现实生活中的一些场景,亚瑟、猴子、小乔可以统称为王者荣耀中的英雄类,而王者荣耀、吃鸡也可以是一个游戏类。
类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物
特征即是属性
行为即是方法
那么我们怎么去定义类呢?(以下就是定义类的语法)
class 类名:
code
......
......
创建对象的语法也很简单
对象名 = 类名()
看到这里,很多人也许想问,括号里面是空的吗?非也,我们看看下面一个例子
class washer():
def wash(self): #这个wash我们称为washer这个类里面的一个方法
print('do you want wash?')
print(self) #打印输出以下看看这个self的值是什么
washer1 = washer()
print(washer1)
washer1.wash()
#<__main__.washer object at 0x00000148C58D7D00>
#do you want wash?
#<__main__.washer object at 0x00000148C58D7D00>
'''
不难发现,程序运行后打印的washer1的内存地址和self的内存地址是一样的,实质上他两
是一个东西
'''
#
有了上面的例子,因此我们可以自己动手实验衍生—— 一个类创建多个对象,并且这些对象的内存地址是不一样的。
三、添加和获取对象属性
属性即是特征,对象属性可以在类外面添加获取,也可以在类里面添加获取
1、类外面添加对象属性
语法: 对象名.属性名 = 值
class teacher():
def test(self):
print('fine')
tea1 = teacher()
tea1.age = 19
tea1.grade = 9
print(f'老师的年龄是{tea1.age}')
print(f'老师的年级是{tea1.grade}')
#老师的年龄是19
#老师的年级是9
2、类里面获取对象属性
class washer():
def wash(self):
print('ok')
print(f'洗衣机的长度是{self.long}')
print(f'洗衣机的宽度是{self.h}')
washer1 = washer()
washer1.long = 800
washer1.h = 100
washer1.wash()
#ok
#洗衣机的长度是800
#洗衣机的宽度是100
#
#
四、魔法方法
在Python中,形如 __x__()的函数叫做魔法方法,指的是具有特殊功能的函数。
下面具体讲解一下三个魔法方法的基本知识和相关操作:
1、
__init__():
它的作用就是初始化对象
需要注意的是,在创建一个对象时它就被默认调用了,所以是不需要手动调用的
不带参数的__init__()就不做深刻讲解了,实质上和带参数的__init__()方法是一样的
下面来看看带参数的__init__()
class Teacher():
def __init__(self,age,name):
self.age = age
self.name = name
def teach(self):
print(f'老师的年龄是:{self.age}')
print(f'老师的年龄是:{self.name}')
teacher1 = Teacher(30,'lihua') #创建对象时不需要手动调用__init__(),默认被调用
teacher1.teach()
teacher2 = Teacher(40,'zhangsanfen')
teacher2.teach()
#老师的年龄是:30
#老师的年龄是:lihua
#老师的年龄是:40
#老师的年龄是:zhangsanfen
2、
__str__():
这个东西在日后的自定义异常中的应用会非常的实用,以后你们就知道啦!
简单地来讲,小伙伴们可以试试,如果根据一个类创建了一个对象,然后print输出这个对象,结果打印的是对象的内存地址,那么如果定义了__str__()方法,那么这时候就会打印在这个方法中的返回值。
class Teacher():
def __init__(self,age,name):
self.age = age
self.name = name
def teach(self):
print(f'老师的年龄是:{self.age}')
print(f'老师的年龄是:{self.name}')
def __str__(self):
return '这是一个老师的相关信息'
teacher1 = Teacher(30,'zhangsan')
teacher1.teach()
print(teacher1)
#老师的年龄是:30
#老师的年龄是:zhangsan
#这是一个老师的相关信息
3、
__del__():
这个魔法方法的作用是当删除对象时,python解释器也会默认调用__del__()
class Teacher():
def __init__(self,age,name):
self.age = age
self.name = name
def teach(self):
print(f'老师的年龄是:{self.age}')
print(f'老师的年龄是:{self.name}')
def __del__(self):
print(f'对象{self.name}已经被删除')
teacher1 = Teacher(30,'lihua')
teacher1.teach()
#对象lihua已经被删除
老师的年龄是:30
老师的年龄是:lihua
总结
实际上面向对象的初级部分还是非常简单地,而在后续的学习中又会遇到很多问题,在后面的学习中我也会把他们提出来供大家参考(我知道我很菜别喷我)