类=属性+方法
Classname.__dict__查看类属性
Classname.dir查看类方法
#创建Dog类,类名首字母大写
class Dog:
def __init__(self,name,gender,age):
print('start')
self.mingzi=name
self.xingbie=gender
self.nianji=age
print('stop')
# 实例化类
p1=Dog('Bark','male','18')
#查看累的属性,以字典形式输出
print(p1.__dict__)
print(p1.mingzi)
输出:
start
stop
{'mingzi': 'Bark', 'xingbie': 'male', 'nianji': '18'}
Bark
类的继承多态封装
继承:B类继承A类,则A类为父类,B类为子类,B类既可调用自身的所有属性和方法,也可调用其父类的属性和方法,节省代码。
ps:父类属性必须包含在子类中
如何继承:
继承类的构造方法:
1.经典类的写法: 父类名称.init(self,参数1,参数2,…)
2. 新式类的写法:super(子类,self).init(参数1,参数2,…)
**单继承:**一个子类只继承一个父类
#父类
class Parentcalss:
pass
#子类 继承一个父类
class Subclass(parentclass):
pass
```
**多继承**
class parentcalss1:
pass
class parentcalss2:
pass
class Subclass(parentclass1,parentcalss2):
pass
*****************************完美分割线***************************
多态:在子类中重构父类函数,函数名称与父类函数名称相同,出现重构函数情况是,子类先动用自己内部的方法
**实例(继承+多态):**
#创建父类 animals
class Animals:
def __init__(self,name,gender,color): #初始化父类属性
self.gender=gender
self.color=color
self.name=name
def Run(self):#定义父类方法Run
print(self.name,'is running')
#创建子类Dog,继承父类animals
class Dog(Animals):
def __init__(self,name,gender,color,age):#初始化子类属性
super(Dog,self).__init__(name,gender,color)#初始化父类属性
self.name=name
self.age=age
def Bark(self): #定义子类方法
print(self.name,'is barking')
#创建子类属性Cat,继承父类Animals
class Cat(Animals):
def __init__(self,name,gender,color,age):#初始化子类属性
super(Cat,self).__init__(name,gender,color) #初始化父类属性
self.name=name
self.age=age
def Run(self,speed):#子类重构父类方法,子类父类出现同名函数是,先调用子类自己类里的方法(**多态)**
print(self.name,'is running at a speed of%s'%speed)
def Moew(self):#定义子类方法
print(self.name,'is moewing')
#实例化类Dog
mydog=Dog('Burt','male','brown',3)
print('Dog类调用自身的Bark方法')
mydog.Bark()
print('Dog类调用父类的Run方法')
mydog.Run()
#实例化Cat类
mycat=Cat('Burt','male','brown',3)
print('Cat类调用自身的Run方法')
mycat.Run('5km/h')
输出:
Dog类调用自身的Bark方法
Burt is barking
Dog类调用父类的Run方法
Burt is running
Cat类调用自身的Run方法
Burt is running at a speed of 5km/h
封装:定义好类+初始化类属性+def类方法
def类方法可调用属性里的所有参数,只需传入参数self和本身需要的额外参数