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 ''' |