1.entity1.py
1 class Human(): 2 sum = 0 3 4 def __init__(self,name,age): 5 self.name = name 6 self.age = age 7 8 def get_name(self): 9 print('get_name:',self.name) 10 11 def do_homework(self): 12 print('This is a parent method')
2.entity.py
1 """ 2 ~~~~~面向对象~~~~~ 3 有意义的面向对象代码 4 类 = 面向对象 5 类、对象 6 实例化(无需new):表现形式为: 类名() 7 类基本作用:封装、类只负责定义描述属性与函数(不能直接在类内部调用类的函数) 8 类里面的函数的参数 9 10 类:是现实世界或思维世界中的实体在计算机中的反映(事物属性) 11 它将数据以及这些数据上的操作封装在一起(方法/函数) 12 13 面向对象三大特性:继承性、封装性、多态性 14 """ 15 from entity1 import Human 16 17 """ 18 继承 19 类后的括号中的参数若为类时,则括号中的类为当前类的父类 20 子类方法与父类方法同名时,调用时会默认子类方法 21 """ 22 23 class Student(Human): 24 # 类变量 25 #sum = 0 26 # name = 'qiyue' 27 # age = 0 28 29 #构造函数(当实例化该类时自动化运行构造函数,return只能返回none其他返回报错) 30 #初始化对象的属性 31 #实例方法参数默认为self(也可改成其他),但调用实例方法时不需要对self实例传参 32 33 def __init__(self,school,name,age): 34 self.school = school 35 super(Student,self).__init__(name,age) 36 #Human.__init__(self,name,age) 37 #实例变量 38 """ 39 self.name = name 40 self.age = age 41 self.score = 0 42 print('__init__',name,age) 43 self.__class__.sum += 1 44 print("当前班级学生总数为:" + str(self.__class__.sum)) 45 print(self.__dict__) #字典 46 """ 47 #仅在方法名或变量前加 __ 时,表示该方法或变量私有化 私有变量的自动调用 _类名__变量 公开的 public 私有的 private 48 def marking(self,score): #__marking(self,score): 49 if score < 0: 50 return '不能打负分' 51 self.score = score 52 print(self.name + '同学本次考试分数为:' + str(self.score)) 53 54 #行为 与 特征 55 def do_homework(self): 56 self.do_english_homework() 57 super(Student, self).do_homework() 58 print('子类:do_homework') 59 return 'homework' 60 61 def do_english_homework(self): 62 print("do_english_homework") 63 64 #类方法 可以被类和对象调用 65 @classmethod 66 def plus_sum(cls): 67 cls.sum += 1 68 print("plus_sum:",cls.sum) 69 print(cls.name) 70 pass 71 72 #静态方法(无传入类) 可以被类和对象调用 73 @staticmethod 74 def add(x,y): 75 print(Student.sum) 76 print('This is a static method') 77 # class Printer(): 78 # name = '' 79 # age = 0 80 # 81 # def print_file(self): 82 # print('name:' + self.name) 83 # print('age:' + str(self.age)) 84 85 86 class StudentHomework(): 87 homework_name = '' 88 89 90 #student = Student() 91 # printer = Printer() 92 # printer.print_file() 93 #print(student.age,student.do_homework()) 94 """ 95 方法 和 函数的区别 96 C、C++称为函数,Java、C#称为方法 97 方法:设计层面 98 函数:程序运行、过程式的一种称谓 99 """ 100 101 102 #实例化应用 103 """ 104 student1 = Student('晓明',18) 105 Student.plus_sum() 106 student1.plus_sum() 107 student1.add(1,2) 108 Student.add(2,1) 109 student2 = Student('晓红',19) 110 Student.plus_sum() 111 result = student1.marking(-1) 112 print(result) 113 print(student1.name) 114 print(student2.name) 115 print(Student.name) 116 print(student1.__dict__) 117 print(Student.__dict__) 118 print(Student.sum) 119 print(student1.sum) 120 print(student1.__class__.sum) 121 student1.do_homework() 122 student1.score = -1 123 student1.__score = -2 124 print(student1.__dict__) 125 """ 126 # a = student1.__init__() 127 # print(a,type(a)) 128 # student2 = Student() 129 # student3 = Student() 130 #print(id(student1),id(student2),id(student3)) 131 132 133 #面向对象三大特性:继承性、封装性、多态性 134 """ 135 student1 = Student('晓明',20) 136 print(student1.sum) 137 print(Student.sum) 138 print(student1.name) 139 print(student1.age) 140 student1.get_name() 141 """ 142 student1 = Student("清华大学",'晓明',20) 143 print(student1.__dict__) 144 student1.do_homework()