【汇总】:https://blog.csdn.net/wistonty11/article/details/121348048
【2章:变量和简单数据类型】:https://blog.csdn.net/wistonty11/article/details/114553239
【3章:列表简介】:https://blog.csdn.net/wistonty11/article/details/114673314
【4章:列表操作】:https://blog.csdn.net/wistonty11/article/details/114684679
【5章:if语句】:https://blog.csdn.net/wistonty11/article/details/114932777
【6章:字典】https://blog.csdn.net/wistonty11/article/details/117432520
【7章:用户输入和while循环】:https://blog.csdn.net/wistonty11/article/details/117437656
【8章:函数】:https://blog.csdn.net/wistonty11/article/details/117448978
【9章:类】:https://blog.csdn.net/wistonty11/article/details/117521111
文章目录
# time:2021.06.03
# 收录在《口袋图书》系列:随时随地便于阅读
# 只节选了 重要/必要内容, 例子适当的简化
# 本文为摘抄总结 望赞鼓励
9.1 创建和使用
类就是 一个功能,一种东西等,具有相同特性的东西打包了。如果一个表,按功能,可以一个类来写这个表怎么走的,一个类来实现表的现实,高级点的 一个类来实现温度,一个类实现湿度等
9.1.1 创建和调用
① 创建
class cat():
def __init__(self,name):
self.name = name
def eat(self):
print(self.name.title() + " is eating now!")
-
类中的函数称为方法.本例子有两个方法: init , eat
-
init 是特殊的方法,就是初始化。形式:前后两个_
-
形参self必不可少,还必须在其他形参之前。
-
需要self的原因:访问自身的属性和方法 :eat必须加self是因为用到了self.name
② 调用类中属性和函数
class cat():
def __init__(self,name):
self.name = name
def eat(self):
print(self.name.title() + " is eating now!")
my_cat = cat('旺旺')
print("My cat's name is " + my_cat.name.title() + ".")
print("----")
my_cat.eat()
My cat's name is 旺旺.
----
旺旺 is eating now!
- my_cat.name调用类:cat中属性:name方法
- my_cat.eat()调用的是类中函数:eat()
9.1.2 给属性设定默认值
class animal():
def __init__(self,name):
self.name = name
self.kind = 'cat' # <------注意
def eat(self):
print(self.name.title() + " is eating now!")
my_animal = animal('旺旺')
print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
My cat's name is 旺旺.
- my_animal.kind调用了animal里属性kind的默认值‘cat’
9.1.3 修改属性的值
① 直接修改
class animal():
def __init__(self,name):
self.name = name
self.kind = 'cat'
def eat(self):
print(self.name.title() + " is eating now!")
my_animal = animal('旺旺')
my_animal.kind = '肥猫' # <------注意
print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
My 肥猫's name is 旺旺.
- 修改方法就是直接调用这个属性,然后赋值就行了。我这里把肥猫赋给了有默认的kind属性
② 通过方法(类中函数)修改
class animal():
def __init__(self,name):
self.name = name
self.kind = 'cat'
def eat(self):
print(self.name.title() + " is eating now!")
def update_kind(self,get_kind): # <------注意
self.kind = get_kind
my_animal = animal('旺旺')
print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
my_animal.update_kind('猪猪猫') # <------注意
print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
My cat's name is 旺旺.
My 猪猪猫's name is 旺旺.
- 用了一个函数:update_kind来对类:animal里面的种类kind进行修改,把默认cat改成了猪猪猫
9.2 继承
就是我们设计类B的时候,不需要每次都从0开始设计,我们可能会用到A,那么就用到了继承
9.2.1 子类的方法
class animal():
def __init__(self,name):
self.name = name
def eat(self):
print(self.name.title() + " is eating now!")
class cat(animal): # <------注意
def __init__(self, name):
super().__init__(name)
my_cat = cat('旺旺')
print("My cat's name is " + my_cat.name.title() + ".")
print("----")
my_cat.eat()
My cat's name is 旺旺.
----
旺旺 is eating now!
-
我们实现了 类cat继承了它父类(animal):名字属性(name)和方法(eating)
-
实现的形式:class 子类名称(父类名称):
-
用__init__(self, name)来接受实例name
-
父类也称为超类超 (superclass)用super().init(name),将父类和子类关联起来。
9.2.2 给子类添加属性和方法
让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法。
class animal():
def __init__(self,name):
self.name = name
def eat(self):
print(self.name.title() + " is eating now!")
class cat(animal):
def __init__(self, name):
super().__init__(name)
self.age = 3 # <------注意①
def update_age(self,get_age): # <------注意②
self.age = get_age
def roll_over(self):
print(self.name.title() + "在打滚!") # <------注意③
my_cat = cat('旺旺')
my_cat.update_age(4)
print(my_cat.name.title()+ str(my_cat.age) + "岁了.") # <------注意④
my_cat.roll_over()
旺旺4岁了.
旺旺在打滚!
-
① 使子类比父类多了属性:age
-
② 子类中增加方法,实现对子类属性age的更新
-
③ 使子类比父类多了方法(类中函数): rolling_over()
-
④ 调用子类中属性:cat.age
-
⑤ 调用子类中方法:cat.rolling_over
9.2.3 子类中更改父类中继承的属性和方法
class animal():
def __init__(self,name):
self.name = name
self.age = 3
def eat(self):
print(self.name.title() + " 正在吃猫粮!")
class cat(animal):
def __init__(self, name):
super().__init__(name)
self.age = 4 # <------注意①
def eat(self):
print(self.name.title() + "正在吃猫罐头!") # <------注意②
my_cat = cat('旺旺')
print(my_cat.name.title()+ str(my_cat.age) + "岁了.") #
my_cat.eat()
旺旺4岁了.
旺旺正在吃猫罐头!
- 更改方法就是同名进行重新定义(赋值)
= 本来继承父类时候 默认为3岁 在吃猫粮,继承后 重新同名定义(赋值),改为了吃猫罐头,4岁
9.3 导入类
导入类和导入函数一样
① 从一个模块导入一个类 或者多个类
# 从模块car.py中导入单个类Car
from car import Car
# 从模块car.py中导入两个类Car, ElectricCar
from car import Car, ElectricCar
② 导入整个car模块
import car
③ 导入模块中所有类
from module_name import *