Python面向對象-學習筆記

1 class Student():
2     name = 'lemon'
3 
4 print(Student.__dict__)
5 print(Student.name)
6 Student.name = 'lemon-Xu'
7 print(Student.name)
建立一個類,並訪問屬性
  • Class.__dict__:返回類相關信息
  • Class.name:設置或返回屬性
 1 class Student():
 2     name = 'lemon'
 3 
 4     def say(self,name):
 5         self.name = name
 6         print(self.name)
 7 
 8 
 9 a = Student()
10 
11 a.say('lemon-Xu')
12 
13 Student.say(Student,'lemon-X')
類函數
  • 類函數第一個參數必須傳入一個對象
  • 當實例化對象調用時傳入自身.若是類對象調用時必須手動傳入類對象
 1 class Student():
 2     name = 'lemon'
 3 
 4     def __init__(self,name):
 5         self.name = name
 6 
 7 
 8 a = Student('lemon-Xu')
 9 b = Student('lemon-a')
10 
11 print(a.__dict__)
12 print(b.__dict__)
13 print(Student.__dict__)
構造__init__
  • __init__(self),建議只寫一個,重載請參考:https://www.cnblogs.com/erbaodabao0611/p/7490439.html
 1 class Student():
 2     __name = 'lemon'
 3 
 4     def __init__(self,name):
 5         self.__name = name
 6 a = Student('lemon-X')
 7 try:
 8     print(a.name)
 9 except :
10     print('雙下滑線的變量名被改名,因此找不到它,它被更名爲_Class__attribute')
11 print(a._Student__name)
12 
13 print(Student._Student__name)
private,__name
  • 被__(雙下劃線)修飾的屬性,會被改名爲_Class__attribute
  • 被_(單下劃線)修飾的屬性,是被保護的屬性
 1 class Pepole:
 2     name = 'lemon' # 公共
 3     __age = 18 # 私有
 4     _adr = '百草路' # 受保護
 5 
 6     def __init__(self,name):
 7         self.name = name
 8 
 9     def sleep(self):
10         print('困了睡覺....')
11 
12 class Student(Pepole):
13     def work(self):
14         print("寫做業")
15 
16     def sleep(self):
17         self.work()
18         super().sleep()
19 
20 s = Student('lemon')
21 print(Pepole.__dict__)
22 print(Student.__dict__)
23 print(s.__dict__)
24 s.sleep()
extends,單繼承
  • super()方法獲得父類
 1 # extends super
 2 
 3 class A():
 4     def __init__(self,name):
 5         print('A')
 6         print(name)
 7 # 第一種
 8 class B(A):
 9     name = 'B'
10     def __init__(self,name):
11         A.__init__(self,name)
12         print('B')
13 
14     def a(self):
15         print('當前類是:',self.name)
16 # 第二種
17 class C(B):
18     name = 'C'
19     def __init__(self,name):
20         super().__init__(name)
21         print('C')
22 
23     def C2(self):
24         super().a()
25 
26 a = A('lemon')
27 print()
28 c = C('lemon')
29 c.C2()
30 
31 
32 run:
33 A
34 lemon
35 
36 A
37 lemon
38 B
39 C
40 當前類是: B
調用父類方法
  • super().方法,默認傳入當前對象
相關文章
相關標籤/搜索