Python入门学习笔记7:面向对象

Python入门学习笔记7:面向对象

 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()