zoukankan      html  css  js  c++  java
  • 多态

    '''
    class Student:
        def __init__(self,age):
            self.__age = age
    
        @property
        def age1(self):
            return self.__age
    
        @age1.setter
        def age1(self,age):
            self.__age = age
    
    s = Student(10)
    s.age = 11
    print(s.age)
    
    '''
    '''
    继承:
    has a 
    class Student:
        def __init__(self,name,book):
            pass
    
    is a
    
    涉及到父类和子类
    class Preson:
        def __init__(self,name,book)
        self.name = name
        self.age = age
        
        def run(self):
        print('正在跑步')
        
    class Student(Preson):
        def __init__ (self,score);
        self.score = score
        super(Student,self).__init 继承父类中的属性
        
        def run(self):
        print('{}正在走'.format(self.name))
        super().run() 调用父类中的方法
        
        复习的时候:
        1.__init__ 父类有子类没有 父类没有 子类有  父类子类都有
        2.重写的方法,要父类的方法的情况
        3.多继承 一个类可以继承多个父类(广度优先 python3)
        obj.__mro__
        
        
        
        多态 封装 继承------》面对对象编程
    '''
    
    '''
    多态
    '''
    
    
    class Preson:
        def __init__(self, name):
            self.name = name
    
        def feed_pet(self, pet):   # 此时的pet可以接收一切对象,但是要经过判断
            if isinstance(pet, Pet):
                print('{}喜欢养{}'.format(self.name, pet.nickname))
            else:
                print('不是宠物')
    
    
    class Pet:
        role = 'Pet'
    
        def __init__(self, nickname, age):
            self.nickname = nickname
            self.age = age
    
        def show(self):
            print('{}的年龄是{}'.format(self.nickname, self.age))
    
    
    class Cat(Pet):
        role = '猫'
    
        def catch_mouse(self):
            print('抓老鼠。。。')
    
    
    class Dog(Pet):
        role = '狗'
    
        def watch_house(self):
            print('看家......')
    
    
    class Tiger:
        def eat(self):
            print('老虎能吃人')
    
    
    # 创建对象
    cat = Cat('luck', 18)
    dog = Dog('大黄', 4)
    preson = Preson('家伟')
    tiger = Tiger()
    preson.feed_pet(tiger)
    
    
     Python中多态是指一类事物有多种形态。比如动物有多种形态,人,狗,猫,等等。 
     Python的多态性是指:在不考虑实例类型的情况下使用实例,也就是说不同类型的实例有 相同的调用方法。比如人,猫,狗,等等只要是继承了animal就可以直接调用它的talk()方法。 
     peo=People() dog=Dog() pig=Pig() #peo、dog、pig都是动物,只要是动物肯定有talk方法 #于是我们可以不用考虑它们三者的具体是什么类型,而直接使用 peo.talk() dog.talk() pig.talk() #更进一步,我们可以定义一个统一的接口来使用 def func(obj):     obj.talk()
    
    
     
    好处:
     1.增加了程序的灵活性   以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal) 2.增加了程序额可扩展性   通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用 
    
    
    
    
    
    回顾:
    面对对象的特点:
    封装,继承,多态
    
    封装:
    私有化属性,定义公有的set和get方法:
    class Student;
        def __init__(self,age):
            self.__age = age
    
         @property
         def xx(self):
            return self.__age
    
         @xx.setter
         def xx(self);
            self.__age = xx
    这边注意,子类继承父类的时候,父类里面的私有属性(__init__)不会被继承
    
    继承:
    has a
    is a  父类子类中的调用
    
    多态:
    同一个类但是有多种形态的表现

  • 相关阅读:
    埋点和用户画像
    HDR 2 数据集预处理
    HDR 1(介绍)
    关于AR
    Android驱动
    修改用户登陆次数
    使用plsql developer报错
    oracle客户端卸载
    项目:搜索查找
    使用BeautifulSoup模块解析HTML(文件example.html)
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/12306945.html
Copyright © 2011-2022 走看看