python-面向對象--組合(嵌套)


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

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
View Code

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  
View Code

 

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}
View Code

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM