• Day17:call the base class


    Static attribute:

     1 class Room:
     2     tag = 1
     3     def __init__(self,name,owner,width,length,height):
     4         self.name = name
     5         self.owner = owner
     6         self.width = width
     7         self.length = length
     8         self.height = height
     9 
    10     @property
    11     def area(self):
    12         # print('%s live in %s with the aera %s square' % (r1.owner, r1.name, r1.width * r1.length))
    13         return self.width * self.length
    14     def test(self):
    15         print("from test",self.name)
    16     @classmethod              #provide for class
    17     def tell_info(cls):       #cls
    18         print(cls)
    19         print("--->>",cls.tag)
    20     # def tell_info(self):
    21     #     print("------>>>",self.tag)
    22     @staticmethod  # no conbination,the tool bags of class
    23     def wash_body(a, b, c):
    24         print('%s %s %s is taking shower' % (a, b, c))
    25 
    26     # def test1(x,y):
    27     #     print(x,y)      #no use
    28 
    29 # Room.wash_body('alex', 'liu', 'chicken')
    30 # r1 = Room('bathroom', 'alex', 100, 100, 10000)
    31 # r1.wash_body('alex', 'liu', 'chicken')
    32 
    33 # r1 = Room('bathroom','alex',100,100,10000)
    34 # r2 = Room('garden','zxver',100,100,10000)
    35 # # r1.area()
    36 # # r1.area
    37 # print(r1.area)   #hidden the backstage logical function
    38 # print('%s live in %s with the aera %s square'%(r1.owner,r1.name,r1.width*r1.length))
    39 # print(Room.tag)
    40 # Room.tell_info(r1)    #use self must hava a instantiation
    41 Room.tell_info()        #use @classmethod will send the Room attribute to the bracket,it will be used
    42 #when the class want use the attribute in itself.
    View Code

    Combination:

      1 # class Hand:
      2 #     pass
      3 #
      4 # class Foot:
      5 #     pass
      6 #
      7 # class Trunk:
      8 #     pass
      9 #
     10 # class Head:
     11 #     pass
     12 #
     13 # class Person:
     14 #     def __init__(self,id_num,name):
     15 #         self.id_num = id_num
     16 #         self.name = name
     17 #         self.hand = Hand()
     18 #         self.foot = Foot()
     19 #         self.head = Head()
     20 #         self.trunk =Trunk()
     21 #
     22 # p1 = Person('11111','alex')
     23 # print(p1.__dict__)
     24 
     25 class School:
     26     def __init__(self,name,addr,type, area,rent):
     27         self.name = name
     28         self.addr = addr
     29         self.type = type
     30         self.area = area
     31         self.rent = rent
     32         self.course_list = []
     33     def recruit_teacher(self):
     34         pass
     35     def dismiss_teacher(self):
     36         pass
     37     def recruit_student(self):
     38         pass
     39     def dismiss_student(self):
     40         pass
     41     def open(self):
     42         pass
     43     def close(self):
     44         pass
     45     def open_branch(self):
     46         pass
     47 
     48 class Teacher:
     49     def __init__(self,name,age,gender,city,education,major,hobby,salary):
     50         self.name = name
     51         self.age = age
     52         self.gender = gender
     53         self.city = city
     54         self.education = education
     55         self.major = major
     56         self.hobby = hobby
     57         self.salary = salary
     58         self.school = School()
     59     def teach(self):
     60         pass
     61     def internship(self):
     62         pass
     63 
     64 class Class:
     65     def __init__(self,name,number):
     66         self.name = name
     67         self.number = number
     68     def open(self):
     69         pass
     70     def close(self):
     71         pass
     72 
     73 class Course:
     74     def __init__(self,name,fee,period):
     75         self.name = name
     76         self.fee = fee
     77         self.period = period
     78 
     79 
     80     def open(self):
     81         pass
     82 
     83     def close(self):
     84         pass
     85 
     86 class Student:
     87     def __init__(self,name,age,gender,addr,grade,school):
     88         self.name = name
     89         self.age = age
     90         self.gender = gender
     91         self.addr = addr
     92         self.grade = grade
     93         self.school = school
     94     def study(self):
     95         pass
     96     def compile(self):
     97         pass
     98 
     99 s1 = School('oldboy','chongqing','selfish','nanchuan',10000)
    100 s2 = School('oldboy','chongqing','selfish','fuling ',10000)
    101 s3 = School('oldboy','chongqing','selfish','wulong',10000)
    102 
    103 # c1 = Course('python',10,'1h',s1)    #s1 include the information of the school
    104 # # print(c1.__dict__)
    105 # # print(c1.school)
    106 # # print(c1.school.name)
    107 # msg = '''
    108 # 1 oldboy   nanchuan
    109 # 2 oldboy   fuling
    110 # 3 oldboy   wulong
    111 # '''
    112 # while True:
    113 #
    114 #     menu = {
    115 #         '1':s1,
    116 #         "2":s2,
    117 #         "3":s3
    118 #     }
    119 #     choice = input('please choose area >>:')
    120 #     school_obj = menu[choice]
    121 #     name = input('create course >>:')
    122 #     fee = input('the fee >>:')
    123 #     period = input('the period >>:')
    124 #
    125 #     new_course = Course(name,fee,period,school_obj)
    126 #     print('the course %s is belonging to %s school'%(new_course.name,new_course.school.area))
    127 
    128 
    129 #>>>>>>>>>the low method to create the choosing courses system:
    130 # c1 = Course('pyhton','30','24h')
    131 # c2 = Course('pyhton','20','12h')
    132 # print(s1.course_list.append(c1))
    133 # print(s1.course_list.append(c2))
    134 # print(s1.__dict__)
    135 # for course_obj in s1.course_list:
    136 #     print(course_obj.name)
    View Code

    Simple inherit:

     1 class Dad:
     2     'this is father class'
     3     money = 10
     4     def __init__(self,name):
     5         print('dad')
     6         self.name = name
     7 
     8     def hit(self):
     9         print("%s is punching his son "%self.name)
    10 
    11 class Son(Dad):
    12     money = 1000000000
    13     def __init__(self,name,age):
    14         self.name = name
    15         self.age = age
    16 
    17 print(Dad.money)
    18 print(Dad.__dict__)
    19 print(Son.__dict__)
    20 # s1 = Son('alex')
    21 s1 = Son('alex',18)   #the priority
    22 print(s1.name)
    23 print(s1.money)
    24 s1.hit()
    25 
    26 
    27 #>>>>>>>>>>>>>>>>>>>:the useage of combination and inherit:
    28 '''
    29 1: conbination:when the class is remarkblly different,and the lower stage need the conponents in the bigger stage
    30 2:inherit:when there are many common functions between the class,and extract the common functions to make a base class . 
    31 
    32 '''
    View Code

    Port inherit:

     1 import abc    #realize the port inherit
     2 
     3 class All_file(metaclass=abc.ABCMeta):
     4     @abc.abstractmethod    #>>>>>>>use this to restrict the use of the function,if without it will report wrong
     5     def read(self):
     6         #the base class do not have to accomplish,but the lower class must define it
     7         pass
     8 
     9     @abc.abstractmethod
    10     def write(self):
    11         #the base class do not have to accomplish,but the lower class must define it
    12         pass
    13 #>>>>>>port inherit requires the lower class to state all the fuction which in the higher class
    14 class Disk(All_file):
    15     def read(self):
    16         print('disk read')
    17     def write(self):
    18         print('disk write')
    19 class Cdrom(All_file):
    20     def read(self):
    21         print('cd read')
    22     def write(self):
    23         print('cd write')
    24 class Mem(All_file):
    25     def read(self):
    26         print('mem read')
    27     def write(self):
    28         print('menm write')
    29 
    30 
    31 m1 = Mem()
    32 m1.read()
    33 m1.write()
    View Code

    the inherit sequence:

    Call father level class:

     1 #>>>>>>>>>the method is not good ,cause if the father class change names ,it will be difficult to change
     2  #>>>the inner code
     3 
     4  #it provide another way:super()
     5 
     6 
     7 class Vehicle:
     8     Country = 'china'
     9     def __init__(self,name,speed,load,power):
    10         self.name = name
    11         self.speed = speed
    12         self.load = load
    13         self.power = power
    14 
    15     def run(self):
    16         print('engine>>>')
    17 
    18 class Subway(Vehicle):
    19     def __init__(self,name,speed,load,power,line):
    20         # Vehicle.__init__(self,name,speed,load,power)
    21         # super().__init__(name,speed,load,power)
    22         super(Subway,self).__init__(name,speed,load,power)
    23         # self.name = name
    24         # self.speed = speed
    25         # self.load = load
    26         # self.power = power
    27         self.line = line
    28 
    29     def show_info(self):
    30         print(self.name,self.line)
    31 
    32     def run(self):
    33         # Vehicle.run(self)
    34         super().run()
    35         print('%s %s line is departing'%(self.name,self.line))
    36 
    37 line6 = Subway('line6','368km/h',100000000,'electricity',6)
    38 print(line6.name)
    39 line6.show_info()
    40 line6.run()
    View Code
  • 相关阅读:
    Json schema前奏 关于JSON
    笔试题:能被1~10同时整除的最小整数是2520,问能被1~20同时整除的最小整数是多少?
    CentOS7 安装 Docker、最佳Docker学习文档
    2019年4399暑期实习算法题2,迷宫路径条数
    2019vivo秋招提前批笔试题第3题
    python内存机制与垃圾回收、调优手段
    N皇后问题的python实现
    一行代码判断一个数是否是2的整数次方
    在O(1)的时间内删除链表节点
    打印从1到n位数的最大值
  • 原文地址:https://www.cnblogs.com/zxver/p/12694304.html
Copyright © 2020-2023  润新知