Python的类/类的继承/多态/封装

类=属性+方法

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和本身需要的额外参数

猜你喜欢

转载自blog.csdn.net/weixin_44595372/article/details/88016647
今日推荐