学习目标:
- 一周掌握python入门知识
学习内容:
目录
1.面向过程和面向对象区别
了解到面向对象与面向过程的本质区别,面向过程本质是步骤,面向对象本质是对象。
而面向对象就是是一种编程思维(找一个对象帮你干活)
2.面向对象三大特性
三大特性: 封装 继承 多态 封装: 把属性和方法隐藏到类中,对外提供公共的接口 继承: 子类默认能够使用父类的属性和方法 多态: 同一种事物不同的形态
3.类和对象
类: 是一类事物的统称,是一个抽象的概念 对象: 是类的具体体现,是一个实际存在的事物 类和对象的关系: 先定义类,再根据类去创建对象
4.定义类和创建对象
知识点:
定义类的格式: class 类名(): ... 创建对象的格式: 对象名 = 类名() 对象调用类中普通方法: 对象名.方法名()
示例:
# 1.定义类 : class 类名(): 代码
class Person():
# 类中的方法其实就是一个函数
# 稍微有点特殊,形参第一个位置是self
def study(self):
print('学习Python使我快乐')
# 2.根据类创建对象 : 对象名 = 类名()
zs = Person()
# 3.测试打印对象名效果: 0x:000001EW0UD73D90 16进制的地址
print(zs) # <__main__.Person object at 0x000001EE07D73D90>
# 3.1 打印地址: id
print(id(zs)) # 2561959411088 10进制的地址
# 4.对象调用类中的方法: 对象名.方法名()
zs.study()
5.self含义
知识点:
self: 自我本身 位置: 类中普通方法形参的第一个位置 作用: 哪个对象调用该方法,self就代表哪个对象
示例:
# 1.定义类 : class 类名(): 代码
class Person():
# 类中的方法其实就是一个函数
# 稍微有点特殊,形参第一个位置是self
# self: 哪个对象调用该方法,self就代表哪个对象
def study(self):
# 5.打印self看下指向的是哪个对象? 调用该函数的对象
print('self:',self)
print('Python使我快乐')
# 2.根据类创建对象 : 对象名 = 类名()
cx = Person()
tw = Person()
# 3.测试打印对象名效果: 0x:000001EE07D73D90 16进制的地址
print('cx:',cx) # <__main__.Person object at 0x000001EE07D73D90>
print('tw:',tw) # __main__.Person object at 0x00000212BEBF00D0>
# 4.对象调用类中的方法: 对象名.方法名()
cx.study()
tw.study()
6.在类外添加属性和获取属性
知识点:
在类外添加属性格式: 对象名.属性名 = 值 在类外获取属性格式: 对象名.属性名
示例:
# 1.定义类
class Person():
# 定义方法(本质就是一个函数)
def study(self):
print('学习python使我快乐')
# 2.根据类创建对象,注意类名后的括号必须加上
zs = Person() # 类似出生,有了生命了
print(zs)
# 2.1 给cx对象设置姓名属性
cx.name = '崔小'
cx.age = 18
# 3.获取zs对象的姓名
print(f'姓名:{zs.name},年龄:{zs.age}')
zs.study()
7.在类内获取属性
知识点:
在类内添加属性格式: self.属性名 = 值 一般都是和init魔法方法中配合使用 在类内获取属性格式: self.属性名
示例:
# 1.定义类
class Person():
# 定义方法(本质就是一个函数)
# self带表当前对象cyy
def study(self):
# 类内获取属性: 建议用self在类内获取: self.属性名
# 此处age和name都报黄:提示你Person类中没有找到,不影响结果,
# 稍后解决这个问题:在类内添加属性配合init魔法方法使用
print(f'{self.age}岁的{self.name}正在学习...')
# 2.根据类创建对象,注意类名后的括号必须加上
cyy = Person()
print(cyy)
# 2.1 类外给zs对象设置姓名属性
cyy.name = '崔丫丫'
cyy.age = 18
# 3.类外获取cx对象的姓名
# print(f'姓名:{cyy.name},年龄:{cyy.age}')
cyy.study()
8.魔法方法
知识点:
书写: _ _方法名_ _(self): 代码... 执行: 自动调用不需要手动调用 常见的魔法方法: __init__方法: 执行时机: 创建对象的时候 对象名 = 类名() __str__方法: 执行时机: 打印对象的时候 print(对象名) __del__方法: 执行时机: 删除对象的时候 del 对象名 或者 程序正常结束的时候
9.魔法方法之init方法
知识点:
_ _init_ _魔法方法: 执行时机: 创建对象的时候自动调用 作用: 初始化对象(给对象的属性赋初始值)
示例:
# 1.定义类
class Person():
# 魔法方法init: 创建对象的时候自动调用
def __init__(self, name, age):
# 在类内添加属性:self.属性名 = 值
self.name = name
self.age = age
# 2.1创建对象
cyy = Person('崔丫丫', 18) # 代码到此行会自动执行init魔法方法
# 3.1获取姓名和年龄
print(cyy.name, cyy.age)
# 2.2创建对象
zs = Person('张三', 28) # 代码到此行会自动执行init魔法方法
# 3.2获取姓名和年龄
print(zs.name, zs.age)
10.魔法方法之str方法
知识点:
_ _str_ _魔法方法: 执行时机: 打印对象名的时候 作用: 默认打印对象名打印出来的地址,如果类中写了str方法,打印对象的时候打印的是str返回的字符串
示例:
# 1.定义类
class Person():
# 魔法方法init: 创建对象的时候自动调用
def __init__(self, name, age):
# 在类内添加属性:self.属性名 = 值
self.name = name
self.age = age
# 魔法方法之str: 打印对象的时候自动调用
def __str__(self):
# 必须返回字符串类型
return f'{self.name}的年龄是:{self.age}'
# 2.1创建对象
cyy= Person('崔丫丫', 18) # 代码到此行会自动执行init魔法方法
# 3.1获取姓名和年龄
print(cyy) # 代码执行到此行会自动打印str方法返回的字符串
# 2.2创建对象
zs = Person('张三', 28) # 代码到此行会自动执行init魔法方法
# 3.2获取姓名和年龄
print(zs) # 代码执行到此行会自动打印str方法返回的字符串
11.魔法方法之del方法
知识点:
_ _del_ _魔法方法: 执行时机: 手动删除对象的时候,或者程序正常结束后 作用: 记录删除日志
示例:
演示手动删除指定对象情况:
# 1.定义类
class Person():
# 注意: 删除对象的时候执行或者程序正常结束的时候执行
# 记录了下删除日志
def __del__(self):
print(f'{self}对象被删除了,del自动执行了')
# 2.创建对象
cyy= Person()
# 3.删除对象
print(cyy)
del cyy # 删除对象的时候能够自动执行del魔法方法
print(cyy) # 此行报错 NameError: name 'cyy' is not defined
print('我是程序的最后一行...')
演示程序正常结束删除所有对象情况:
# 1.定义类
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
# 注意: 删除对象的时候执行或者程序正常结束的时候执行
def __del__(self):
print(f'{self.name}对象被删除了,del自动执行了')
# 2.创建对象
zs = Person('张三',18)
ls = Person('李四',28)
print('我是程序的最后一行...') # 程序正常结束后del会自动执行
12.魔法方法综合练习
示例:
# 1.定义类
class Person():
# init初始化魔对象法方法
def __init__(self, name, age):
print('init执行了...')
self.name = name
self.age = age
# str返回字符串魔法方法
def __str__(self):
return f'{self.name}的年龄:{self.age}'
# del删除日志魔法方法
def __del__(self):
print(f'{self.name}对象被删除了...')
# 2.创建对象(默认自动执行init方法)
cyy = Person('崔丫丫', 18)
# 3.打印对象(默认自动执行str方法)
print(cyy)
# 4.1程序正常结束后del自动执行
# 4.2删除对象(默认自动执行del方法)
del cyy
13.综合练习1
需求:
根据学生成绩0-100判断
(95分及以上优秀,80分及以上良好,75分及以上中等,60分及以上合格,60分以下不及格)
示例:
# 要求用面向对象的方式去解题
# 分析步骤: 类 属性 方法
# 类:学生类Student
class Student():
# 属性: 姓名name 分数score
def __init__(self, name, score):
self.name = name
self.score = score
# 方法: 判断成绩的方法 grade()
def grade(self):
if self.score >= 0 and self.score <= 100:
# 95分及以上优秀,
if self.score >= 95:
print(f'{self.name}的成绩{self.score}:优秀')
# 80分及以上良好,
elif self.score >= 80:
print(f'{self.name}的成绩{self.score}:良好')
# 75分及以上中等,
elif self.score >= 75:
print(f'{self.name}的成绩{self.score}:中等')
# 60分及以上及格,
elif self.score >= 60:
print(f'{self.name}的成绩{self.score}:及格')
# 60分以下不及格
else:
print(f'{self.name}的成绩{self.score}:不及格')
else:
print('成绩有误!')
# 创建学生对象传入姓名和分数
s = Student('崔丫丫',49)
# 调用判断成绩的方法
s.grade()
14.减肥练习
需求:
崔丫丫体重55.0公斤,崔丫丫每次跑步会减掉0.50公斤,崔丫丫每次吃东西体重增加1公斤
示例:
# 崔丫丫体重75.0公斤,崔丫丫每次跑步会减掉0.50公斤,崔丫丫每次吃东西体重增加1公斤
# 分析步骤 类:Person 属性:姓名name 体重weight 方法: 跑步方法run() 吃东西方法eat()
# 1.定义类
class Person():
# 属性:姓名name 体重weight
def __init__(self, name, weight):
self.name = name
self.weight = weight
# str方法打印对象的时候打印的是返回的字符串
def __str__(self):
return f'姓名:{self.name},体重:{self.weight}公斤'
# 方法: 跑步 1次 -0.5
def run(self):
print(f'{self.name}跑步减掉0.50公斤')
self.weight -= 0.5 # self.weight= self.weight-0.5
# 方法: 吃东西
def eat(self):
print(f'{self.name}吃东西体重又增加1公斤...')
self.weight += 1
# 2.创建对象
cyy = Person('崔丫丫', 55)
print(xm)
# 3.调用run方法
cyy.run()
print(xm)
# 4.调用eat方法
cyy.eat()
print(xm)
15.定义类的3种方式
知识点:
python3.x版本之前: 旧式类 必须手动继承object类才是新式类 python3.x版本:默认都是新式类 pyhont3.x定义类默认都是继承了object类
示例:
class Student1(object): pass class Student2(): pass class Student3: pass # 创建对象类名后的括号是不能省略的!!! s1 = Student1() print(s1) s2 = Student2() print(s2) s3 = Student3() print(s3)
学习时间:
- 周一至周五晚上 9 点—晚上6点
- 周六上午 9 点-上午 11 点
- 周日下午 3 点-下午 6 点
本文详细介绍了Python面向对象编程的基础知识,包括面向过程与面向对象的区别、面向对象的三大特性(封装、继承、多态)、类和对象的定义与创建、self的含义、属性的添加与获取、魔法方法的使用(init、str、del)以及相关实例。通过学习,读者将能够快速掌握Python面向对象编程的基本概念和实践操作。
1万+

被折叠的 条评论
为什么被折叠?



