1 #創建一個類,類是一種具有相同屬性和方法的抽象
2 #創建類需要使用class關鍵字,並且定義方法時,方法的第一個參數是self
3 class Student(object):
4
5 #這點與C/C++、C#的語法不同,簡單區別下,定義類屬性需要在特殊方法__init__內部
6 def __init__(self,name,score):
7 self.name = name #注意了,這里才是類內的屬性,為類屬性
8 self.score = score #同樣的,這也是類屬性
9
10 def fun(self):
11 print("這就是類內定義一個類的方法")
12
13 def print_name(self):
14 print(self.name)
15
16 def print_score(self):
17 print(self.score)
18
19 #實例:創建對象,並調用對象的方法
20 omega = Student("歐米茄",100)
21 omega.print_name()
22 omega.print_score()
23
24 #其他的一些實例:
25 class Person(object):
26
27 def __init__(self, name="歐米茄"):
28 self.name = name
29
30 def print_name(self):
31 print(self.name)
32
33 omega = Person()
34 omega.print_name()
35
36
37 #矩形實例:
38 class Rectangle(object):
39
40 def __init__(self,long = 0,breadth = 0):
41 self.long = long
42 self.breadth = breadth
43
44 def setRect(self):
45 try:
46 print("請輸入矩形的長和寬....")
47 long = input("長:")
48 breadth = input("寬:")
49 if not long.isdigit() or not breadth.isdigit() or long == "" or breadth == "":
50 raise ValueError("輸入的值錯誤!")
51
52 self.long = int(long)
53 self.breadth = int(breadth)
54 except:
55 print("輸入錯誤!")
56
57 def getRect(self):
58 print("矩形長度為:%d,矩形寬度為:%d"%(self.long,self.breadth))
59 return self.long,self.breadth
60
61 def getArea(self):
62 print("矩形面積為:",self.long * self.breadth)
63
64 rect = Rectangle(3,5)
65 rect.getArea()
66 rect.setRect()
67 rect.getRect()
68 rect.getArea()
69
70
71 #總結下:
72 """
73 注意:上面的實例目前只能體現出封裝的特性。
74 以下這些只是我先總結的,簡單點,不想搞得太復雜
75 面向對象有三大基本特征:封裝、繼承、多態
76 封裝:就是講客觀事物封裝成抽象類,並對一些不可信的類隱藏信息
77 繼承:主要是用於代碼重用。
78 多態:Python的多態,顯示在繼承上,比如說A B C三個類都有add方法,print_value方法負責調用它們的add方法。
79 如果 它們同時繼承與 D ,且D有add方法,那么 print_value(d): print(d.add()) 可以傳入A B C三種類的對象。
80 且,調用的add函數,根據實例本身的類型。
81
82 """
值得注意的是,Python類方法的第一個參數self,這其實就是C++里的this*,也就是對象本身。