一、类的相关概念
(1)、什么是类
具有同种属性的对象称为类,是个抽象的概念。比如说:汽车、人、狗、神;
(2)、什么是对象或实例
日常生活中的所有东西都是对象,是类的实例化。比如说:推土车是汽车的实例化,集数据属性和方法属性为一身的就是一个对象。
二、类属性、实例属性
(1)、类属性
类属性从字面意义上说就是类所具有的属性,可以理解为一个类中的全局变量。
(2)、实例属性
类实例化成实例对象所具有的属性
举个例子:
1 class School_cla: 2 s_name = "清华" 这个就是类属性 3 def __init__(self,username,title): 4 self.username = username 类实例化后__init__函数里面的都是实例属性 5 self.title = title 6 7 def teach_knowlage(self): 8 print("%s 正在教学" % self.username) 9 10 11 def up_level(self): 12 print("%s 是%s" %(self.username,self.title)) 13 14 print(School_cla.__dict__) 15 p1 = School_cla("liu","engneer") 16 print(p1.__dict__) 17 18 ###输出 19 {'__module__': '__main__', 's_name': '清华', '__init__': <function School_cla.__init__ at 0x000001F21A7FC8C8>, 'teach_knowlage': <function School_cla.teach_knowlage at 0x000001F21A7FC950>, 'up_level': <function School_cla.up_level at 0x000001F21A7FC9D8>, '__dict__': <attribute '__dict__' of 'School_cla' objects>, '__weakref__': <attribute '__weakref__' of 'School_cla' objects>, '__doc__': None} 20 {'username': 'liu', 'title': 'engneer'}
(3)、类属性的增删改
1 class School_cla: 2 s_name = "清华" 3 def __init__(self,username,title): 4 self.username = username 5 self.title = title 6 7 def teach_knowlage(self): 8 print("%s 正在教学" % self.username) 9 10 11 def up_level(self): 12 print("%s 是%s" %(self.username,self.title)) 13 School_cla.addr = "北京" 增加 14 School_cla.name = "北大" 修改 15 del School_cla.name 删除 16 print(School_cla.__dict__) 17 18 ##显示 19 {'__module__': '__main__', 's_name': '清华', '__init__': <function School_cla.__init__ at 0x00000260F0B0C950>, 'teach_knowlage': <function School_cla.teach_knowlage at 0x00000260F0B0C9D8>, 'up_level': <function School_cla.up_level at 0x00000260F0B0CA60>, '__dict__': <attribute '__dict__' of 'School_cla' objects>, '__weakref__': <attribute '__weakref__' of 'School_cla' objects>, '__doc__': None, 'addr': '北京'}
(4)、实例属性的增删改
class School_cla: s_name = "清华" def __init__(self,username,title): self.username = username self.title = title def teach_knowlage(self): print("%s 正在教学" % self.username) def up_level(self): print("%s 是%s" %(self.username,self.title)) p1 = School_cla("liu","engneer") p1.money = "40000" 增加 p1.username="ma" 修改 del p1.title 删除 print(p1.__dict__) ##显示 {'username': 'ma', 'money': '40000'}
三、类的组合
类的组合是将类与类之前关联起来的一种手段
如下例子:
1 class School: 2 def __init__(self,name,addr,teacher,course): 3 self.name = name 4 self.addr = addr 5 self.teacher = teacher 6 self.course = course 7 8 def enrol_students(self): 9 print("%s 正在招收 %s 学生" % (self.name,self.course)) 10 11 class Course: 12 def __init__(self,name,money,teacher): 13 self.name = name 14 self.money = money 15 self.teacher = teacher 16 17 def course_teacher(self): 18 print("%s 的授课老师是%s" % (self.name,self.teacher)) 19 20 class Teacher: 21 def __init__(self,name,course,money): 22 self.name = name 23 self.course = course 24 self.money = money 25 26 def make_money(self): 27 print("%s 教受 %s 的课程,每节课可以赚到%s" % (self.name,self.course,self.money)) 28 29 user1 = Teacher("刘老师","python","10000") 30 user2 = Teacher("林老师","linux","6000") 31 user3 = Teacher("何老师","C","20000") 32 # school1 = School() 33 course_msg = { 34 "1": "python", 35 "2": "linux", 36 "3": "C", 37 } 38 user_msg = { 39 "1": "刘老师", 40 "2": "林老师", 41 "3": "何老师", 42 } 43 school_msg = { 44 "1": "北京", 45 "2": "上海", 46 "3": "广州", 47 } 48 while True: 49 print("欢迎来到清华学习") 50 print(school_msg) 51 print(course_msg) 52 print(user_msg) 53 s_input = input("选择授课地点:") 54 c_input = input("请选择要学的课程:") 55 u_input = input("请选择授课老师:") 56 user_dict = { 57 "1":user1, 58 "2":user2, 59 "3":user3, 60 } 61 course_money = { 62 "python":30000, 63 "linux":20000, 64 "C":25000, 65 } 66 s1=School("清华",school_msg[s_input],user_dict[u_input],course_msg[c_input]) 67 c1 = Course(course_msg[c_input],course_money[user_dict[u_input].course],user_dict[u_input]) 68 print("你选择了%s 在%s的校区学校,选择了%s 课程,学费是%s 授课老师是%s" %(s1.name,s1.addr,c1.name,c1.money,s1.teacher.name)) 69 break 70 71 72 #输出 73 欢迎来到清华学校 74 {'1': '北京', '2': '上海', '3': '广州'} 75 {'1': 'python', '2': 'linux', '3': 'C'} 76 {'1': '刘老师', '2': '林老师', '3': '何老师'} 77 选择授课地点:1 78 请选择要学的课程:1 79 请选择授课老师:1 80 你选择了清华 在北京的校区学习,选择了python 课程,学费是30000 授课老师是刘老师
这个例子写的不是很好,后面再改,应该要遵循大类包含小类,而大部分功能不同的情况下。