python学习笔记(类与类的继承)(*8)
第七篇(写于2020/1/13家中)
所用教材:python编程从入门到实践
类
类的创建
类,我的理解就是一些方法的集合,这些方法有一定的共性
例子:
class Dog():
#模拟一条狗
def __init__(self,name,age):
self.name=name
self.age=age
def mess(self):
print(self.name+'is'+self.age+'years old')
1.方法__init__()
类中的函数叫做方法, __ init __是python的默认方法,==注意前后各有两个下划线 _,共有四个 ==它一定要在其他函数前面使用;用 __xx __来表示与自己定义的不同。这个函数一定要有self为参数(self是自动传递的,只要为其他的参数提供值)。
2. 创建实例,调用方法
如my_dog=Dog(‘bai’,6)来创建一个实例
1.创建了之后,就可以使用类之中的函数了
class Dog():
--snip--
my_dog=Dog('bai',6)
#创建了一个实例,后就可以调用了
my_dog.mess()
bai is 6 years old
2.多个实例
class Dog():
--snip--
my_dog=Dog('bai',6)
you_dog=Dog('black',8)
使用类与实例
1.给属性赋予默认值
那就是不要传参,直接将赋值
class Dog():
def __init__(self,name,size) :
self.name=name
self.size=size
self.moren=6
my_dog=Dog('bai','big')
print(my_dog.name+ ' is '+my_dog.size+' is '+str(my_dog.moren)+' years old')
bai is big is 6 years old
2.修改属性的值
1.直接修改
直接利用赋值等修改,如一中就可以my_dog.moren=7之类的
2.利用方法来修改
利用内置的函数(方法)进行修改
class Dog():
def __init__(self,name,size) :
self.name=name
self.size=size
self.age=6
def change(self,new):
self.moren=new
my_dog=Dog('bai','big')
my_dog.change(20)
print(my_dog.name+ ' is '+my_dog.size+' is '+str(my_dog.moren)+' years old')
继承
当你要编写一个类时,并不一定要从0开始,如你要写电动车时,它与车呈现一个父子的关系,电动车同时有车的特点,所以电动车可以从车这个类继承方法。
子类包含父类的属性和方法
1. 子类创建
1.先完成父类方法的完善class Dog():
2.对子类的创建class white_dog(Dog): 这里要在括号里指定父类的种类
3.对子类的创建要用super()(superclass的简写,代表父类)来初始化,使父类与子类联系起来。(自己瞎编的,还请指教)
1.class Dog():
def __init__(self,name,size) :
self.name=name
self.size=size
self.age=6
2.class white_dog(Dog):
def __init__(self,name,size) :
super().__init__(name,size)#用__init__完成对子类的初始化,用super来联系父与子
2.向子类添加不同于父类的方法
直接在子类里面加就完事了
1.class Dog():
def __init__(self,name,size) :
self.name=name
self.size=size
self.age=6
def ...
2.class white_dog(Dog):
def __init__(self,name,size) :
super().__init__(name,size)#用__init__完成对子类的初始化,用super来联系父与子
#加在下面就行了
self.color='white'
3.重写父类的方法
则要将父类的方法在子类重名(用同样的名字写一遍)再写一遍
如Dog里有sit这个方法,但white_dog是瘸的,sit不了,所以重写.sit()
class Dog():
def __init__(self,name,size) :
self.name=name
self.size=size
self.age=6
def sit(self):
print(self.name+'is sitting')
class white_dog(Dog):
def __init__(self,name,size) :
super().__init__(name,size)#用__init__完成对子类的初始化,用super来联系父与子
#加在下面就行了
self.color='white'
def sit(self):
print(self.name+"can't sit")
new_dog=white_dog('bai',6)
new_dog.sit()
bai can't sit
这样.sit()就被取代了
4.将实例用作属性(将属性放到一个单独的类里面)
class Dog():
def __init__(self,name,size) :
self.name=name
self.size=size
self.age=6
def sit(self):
print(self.name+'is sitting')
class dog_feature():
def __init__(self,color='white'):
self.color=color
class white_dog(Dog):
def __init__(self,name,size) :
super().__init__(name,size)
self.feature=dog_feature()
def sit(self):
print(self.name+"can't sit")
new_dog=white_dog('bai',6)
print(new_dog.feature.color)
这里先对父类进行编写,再写dog的特征的类,再写white_dog,如果要引用color则要先创建实例new_dog,再用new_dog.feature.color
类的导入
与导入文件类似
1.导入模块中的单个类
Car.py
class car():
-------
class ecar():
--------
my_car.py
from Car import car
2.导入模块中多个类
my_car2.py
from Car import car,ecar
3.导入整个模块
import Car
此时如果要用到其中的类的话,则要如Car.car…来使用
4.导入模块的所有类
from Car import*
5.在一个模块中导入另一个模块
Car.py
class car():
Ecar.py
from Car import car
class ecar():
my_car.py
for Car import car
from Ecar import ecar