1 组合(嵌套)
1.1 例子
1.1.1 案例1
![]() 1 class School(object): 2 3 def __init__(self, name, address): 4 5 self.name = name 6 7 self.address = address 8 9 10 11 def speech(self): 12 13 print('讲课') 14 15 16 17 obj1 = School('老男孩北京校区', '美丽富饶的沙河') 18 19 obj2 = School('老男孩上海校区', '浦东新区') 20 21 obj3 = School('老男孩深圳校区', '南山区') 22 23 class Teacher(object): 24 25 def __init__(self, name, age, salary): 26 27 self.name = name 28 29 self.age = age 30 31 self.__salary = salary 32 33 self.school = None 34 35 36 37 t1 = Teacher('李杰', 19, 188888) 38 39 t2 = Teacher('艳涛', 18, 60) 40 41 t3 = Teacher('女神',16, 900000) 42 43 # ############## 老师分配校区 44 45 t1.school = obj1 46 47 t2.school = obj1 48 49 t3.school = obj2 50 51 # #################################### 52 53 # 查看t1老师,所在的校区名称/地址 54 55 print(t1.school.name) 56 57 print(t1.school.address) 58 59 print(t1.name) 60 61 print(t1.age) 62 63 t1.school.speech() |
1.1.2 案例2:
![]() 1 class School: 2 def __init__(self, address): 3 self.address = address 4 5 bj = School('北京校区') 6 sh = School('上海校区') 7 sz = School('深圳校区') 8 9 class Course(object): 10 def __init__(self, name, period, price, school=None): 11 self.name = name 12 self.period = period 13 self.price = price 14 self.school = school 15 16 17 py1 = Course('Python全栈', 110, 19999, bj) 18 py2 = Course('Python全栈', 110, 19999, sh) 19 py3 = Course('Python全栈', 110, 19999, sz) 20 21 l1 = Course('Linux运维', 110, 19999, bj) 22 l2 = Course('Linux运维', 110, 19999, sh) 23 24 g1 = Course('Go开发', 119, 19999, bj) 25 26 27 class Grade(object): 28 def __init__(self, name, people, introduce, course=None): 29 self.name = name 30 self.people = people 31 self.introduce = introduce 32 self.course = course 33 34 gr1 = Grade('全栈1期',20,'....',py1) 35 gr2 = Grade('全栈1期',20,'....',py2) 36 gr3 = Grade('Linux8期',20,'....',l2) 37 38 39 gr1.people 40 gr1.course.price 41 gr1.course.school.address |
1.1.3 案例3
![]() 1 class UserInfo(object): 2 pass 3 4 class Department(object): 5 pass 6 7 class StarkConfig(object): 8 9 def __init__(self,num): 10 self.num = num 11 12 def changelist(self,request): 13 print(self.num,request) 14 15 def run(self): 16 self.changelist(999) 17 18 class RoleConfig(StarkConfig): 19 20 def changelist(self,request): 21 print(666,self.num) 22 23 class AdminSite(object): 24 def __init__(self): 25 self._registry = {} 26 27 def register(self,k,v): 28 self._registry[k] = v(k) 29 30 site = AdminSite() #创建了一个AdminSite类的对象 31 site.register(UserInfo,StarkConfig) #self._registry = { UserInfo:StarkConfig(UserInfo),Department:StarkConfig(Department )} 32 site.register(Department,StarkConfig) 33 print(len(site._registry)) # 2 34 for k,row in site._registry.items(): 35 row.run() #row是values,StarkConfig(UserInfo)是一个对象,对象.方法()---》调用方法;在实例化的过程中传的参数是类名 36 37 # 总结: 38 """ 39 1. 对象中封装了什么? 40 2. self到底是谁? 41 """ 42 43 |
1.2 类或对象能做字典的key
![]() 1 class Foo: 2 pass 3 4 user_info = { 5 Foo:1, 6 Foo():5 7 } 8 print(user_info)#{<class '__main__.Foo'>: 1, <__main__.Foo object at 0x0000018CF41D80B8>: 5} |
1.3 对象中到底有什么?
![]() 1 class Foo(object): 2 def __init__(self,age): 3 self.age = age 4 def display(self): 5 print(self.age) 6 data_list = [Foo(8),Foo(9)] 7 for item in data_list: 8 print(item.age,item.display()) 9 ''' 10 8 11 8 None 12 9 13 9 None 14 ''' |