回顾一下
面向过程编程(思想 )
流水线
优点:逻辑清晰(逻辑一步步的,系统)
缺点:扩展性差(上一个函数的输出是下一个函数的输入)
面向对象编程(思想)
对象: 特征和技能的结合体
面对对象编程:一个个对象进行交互
优点:扩张性非常强
缺点:逻辑非常复杂
类(类别):一系列具有相同特征和技能的对象
现实世界中先有对象,后有类
# 定义学生
# 姓名: 猪瑞星
# 学号: 222222
# 学校: oldboy
# 技能:选课,三十六变
# 姓名: 孔悟空
# 学号: 111111
# 学校: oldboy
# 技能:选课,七十二变
# 姓名: 雷公
# 学号: 666666
# 学校: oldboy
# 技能: 教课,piao
# 定义老师
# 姓名: tank
# 学校: oldboy
# 技能: 教课,piao
# 姓名: nick
# 学校: oldboy
# 技能:教课,看书
python中先有类,再有对象
class 类名(驼峰体): # 定义类,会直接运行类体内的代码
# 定义一系列特征
# 定义一系列方法
对象1 = 类名() # 实例化出对象
class OldBoyStudent:
school = 'oldboy'
def __init__(self,name,age):
self.name = name
self.age = age
def choose_course(self):
print(' is choosing course')
stu1 = OldBoyStudent('gll',18)
stu1.school
stu2 = OldBoyStudent('nick',18)
stu2.school
# 局部存在
class OldBoyStudent:
school = 'oldboy'
name ='nick'
def __init__(self,name,age):
self.name = name
self.age = age
def choose_course(self):
print('is choosing course')
stu1 = OldBoyStudent('gll',18)
print(stu1.name) # gll
stu2 = OldBoyStudent('nick',18)
print(stu2.name) # nick
# 局部找不到
class OldBoyStudent:
school = 'oldboy'
name ='nick'
def __init__(self,name,age):
#self.name = name
self.age = age
def choose_course(self):
print('is choosing course')
stu1 = OldBoyStudent('gll',18)
print(stu1.name) # nick
stu2 = OldBoyStudent('nick',18)
print(stu2.name) # nick
class OldBoyStudent:
school = 'oldboy'
def __init__(self,name,age):
self.name = name
self.age = age
def choose_course(self):
print(id(self)) #1983522658680
print(self.school)
print(f'{self.name} is choosing course')
print(name)
stu1 = OldBoyStudent('gll',18)
stu1.choose_course() # self 是对象本身
print(id(stu1)) #1983522658680
OldBoyStudent.choose_course(stu1)
# 注:
# 针对类而言:choose_course里的self就是传的参数
# 针对对象而言:choose_course里的self就是对象本身
lis = [1,2,3]
lis2 =list([1,2,3])
# 下面两式等同,理解参数self的概念
lis.append(4) # self自动传lis
# lis2.append(lis,4) # 手动传lis
在类里面封装了一大堆特征/数据,然后又封装了一大堆方法(方法用来专门用来操控这些数据的),并且在这基础上对于不同对象,这些属性和方法有不一样
class Animal:
def __init__(self,attri,height,weight):
self.attri = attri
self.height = height
self.weight = weight
def jiao(self):
print('self.attr,'开始叫了')
def eat(self):
print('self.attri,'开始吃饭了')
people = Animal('人类',180,140)
dog = Animal('狗',100,50)
people.eat()
dog.jiao()
??累了就放松一下吧
原文:https://www.cnblogs.com/geyatou322/p/11046526.html