zoukankan      html  css  js  c++  java
  • 静态,组合,继承

    
    
    
    
    class vihecle:
        def __init__(self,name,speed,load):
            self.name=name
            self.speed=speed
            self.load=load
        def show_info(self):
            print("开动啦")
    class b(vihecle):
        def __init__(self,name,speed,load,line):
            super().__init__(name,speed,load)#调用了父类的方法,self自动传递了,调用父类的方法使用supper()
            self.line=line
    
        def show_info(self):
            super().show_info()
            print("我是来自子类的")
    b1=b("北京地铁","1000km/s",10000,13)
    b1.show_info()
    
    
    
    class school:
        def __init__(self,name,addr):
            self.name=name
            self.addr=addr
        def zhao(self):
             print("学校正在招生")
    class course:
        def __init__(self,name,price,period,school):
            self.name=name
            self.p=price
            self.pp=period
            self.school=school
    s1=school("oldbay","beijing")
    s2=school("oldbay","lanjing")
    s3=school("oldbay","gansu")
    c1=course("linux",10,"1h",s1)
    print(c1.__dict__)
    print(c1.school.name)#类的组合
    
    
    
    class school:
        x=1
        def __init__(self,name,add,type):
            self.name=name
            self.add=add
            self.type=type
        def tell_info(self):
            print("学校的详细介绍")
    s=school("清华","北京","公立")
    print(s.__dict__)
    print(school.__dict__)
    s.tell_info()#实例调用类方法的时候python自动传进了一个参数,但是类不行
    school.tell_info(s)#这儿必须自己传参数,因为是类调用类方法,所以不会自动传进参数。

     类的组合用来类和类之间的关联,将小类做成大类。两个类之间没有共同点,但是类和类之间有关联,这就用类的组合来实现。

       组合的定义

      代码重用的重要方式除了继承之外还有另外一种方式,即:组合

      组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合。

         

    class BirthDate:
        def __init__(self,year,month,day):
            self.year=year
            self.month=month
            self.day=day
    
    class Couse:
        def __init__(self,name,price,period):
            self.name=name
            self.price=price
            self.period=period
    
    class Teacher:
        def __init__(self,name,gender,birth,course):
            self.name=name 
            self.gender=gender
            self.birth=birth
            self.course=course
        def teach(self): 
            print('teaching')
    
    p1=Teacher('egon','male', 
                BirthDate('1995','1','27'), 
                Couse('python','28000','4 months')
               ) 
    
    print(p1.birth.year,p1.birth.month,p1.birth.day) 
    
    print(p1.course.name,p1.course.price,p1.course.period)
    ''' 
    运行结果: 
    27 
    python 28000 4 months 
    '''

    继承同时含有两种含义:

    含义一:继承基类的方法,并且做出自己的改变或者扩展(代码重用),意义不大。

    含义二:申明某个子类兼容于某基类,定义一个接口类,子类继承接口类,并且实现接口中定义的方法。

    接口中只是申明函数,但是不能实现函数,用来规范子类,只是所有继承接口的类必须实现接口中的方法。

    import abc

    必须给接口中的方法添加装饰器,@abc.abstractmethod.

    在接口定义中加上参数methodclass=abc.ABCMeta

    继承顺序:python中可以继承多各类,但是Java中只能继承一个类。

    在python3中,继承的顺序是广度优先。(和数据结构中的广度优先是由区别的,不能混淆)

    在python2中,继承的顺序有广度优先和深度优先。

         用组合的方式建立了类与组合的类之间的关系,它是一种‘有’的关系,比如教授有生日,教授教python课程

      当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

    class vihecle:
        def __init__(self,name,speed,load):
            self.name=name
            self.speed=speed
            self.load=load
        def show_info(self):
            print("开动啦")
    class b(vihecle):
        def __init__(self,name,speed,load,line):
            super().__init__(name,speed,load)#调用了父类的方法,self自动传递了,调用父类的方法使用supper()
            self.line=line
    
        def show_info(self):
            super().show_info()
            print("我是来自子类的")
    b1=b("北京地铁","1000km/s",10000,13)
    b1.show_info()

     多态:

    不同对象调用相同的方法,产生不一样的结果,这就是多态。

    复制代码
  • 相关阅读:
    linux如何用yum进行部署xampp环境
    jmeter关联案例的几种方法
    jmeter中元件
    CentOS7在VMware下设置成桥接模式
    CentOS7使用vsftpd搭建ftp
    虚拟机WMware15和CnetOS7安装
    MySql忘记密码的解决方案
    Windows下MySql8解压版的安装与完全卸载
    Idea设置统一为utf-8编码格式
    Idea常用快捷键
  • 原文地址:https://www.cnblogs.com/zypfzw/p/9130765.html
Copyright © 2011-2022 走看看