物件導向(object oriented)的特徵:
class
mylist
(list):
pass
這一步的操作就是讓類mylist繼承了 list列表的方法。現在它可以使用列表裡所有的內建方法。
list2 = mylist
()繼承父類的方法:(38講)
class
derivedclass
(basename1, basename2..)
當子類中定義了和父類一樣名字的方法時,將會覆蓋父類的方法,想要繼續繼承父類的方法時,使用'super.需要的父類方法名稱'即可。
class
a:def
fun(self):
print('我是小a...')
class
b:def
fun(self):
print('我是小b...')
a = a()
b = b()
a.fun()
我是小a...
b.fun()
我是小b...
>>>
class
person:
__name = '小甲魚'
defgetname
(self):
return self.__name
>>> p = person()
>>> p.__name
traceback (most recent call last):
file "", line 1, in
p.__name
attributeerror: 'person' object has no attribute '__name'
>>> p.getname()
'小甲魚'
我們把getname方法稱之為訪問器,python事實上是採用了一種叫 name mangling 的技術,將雙下劃線的變數名改了個名字而已,我們仍然可以通過外部'_類名__變數名'來訪問
>>> p._person__name'小甲魚'
// 烏龜類
class
turtle:
def__init__
(self, x):
self.num = x
// 魚類
class
fish:
def__init__
(self, x):
self.num = x
// 水池類
class
pool:
def__init__
(self, x, y):
self.turtle = turtle(x) // 組合烏龜類進來
self.fish = fish(y) // 組合魚類進來
defprint_num
(self):
print("水池裡總共有烏龜 %d 只,小魚 %d 條!" % (self.turtle.num, self.fish.num))
>>> pool = pool(1, 10)
>>> pool.print_num()
乙個簡單的例子:定義乙個矩形類並生成類例項物件。方法中對屬性的引用形式需加上 self, 例如 self.width。
class
rectangle:
length = 5
width = 4
defsetrect
(self):
print("請輸入矩形的長和寬...")
self.length = float(input('長:'))
self.width = float(input('寬:'))
defgetrect
(self):
print('這個矩形的長是:%.2f,寬是:%.2f' % (self.length, self.width))
defgetarea
(self):
return self.length * self.width
rect = rectangle()
rect.setrect()
rect.getrect()
print(rect.getarea())
可以給類增加魔力的特殊方法!!一般被__雙下劃線所包圍。
該魔法方法在物件被建立時會自動呼叫,當使用這個方法有了輸入引數後,在例項化class的時候class()括號中也要傳入引數了哦~~__init__ 方法不能返回除了none以外的任何物件!!
舉個例子~定義乙個遊樂園門票的類~並計算兩個**乙個小孩的平日票價~物件導向程式設計的難點在於思維的轉換!並不需要在裡面把每乙個都寫的很詳細,要通過不同的物件呼叫來實現統一的變化~
class
ticket
():def
__init__
(self, weekend=false, child=false):
self.exp = 100
if weekend:
self.inc = 1.2
else:
self.inc = 1
if child:
self.discount = 0.5
else:
self.discount = 1
defcalcprice
(self, num):
return self.exp * self.inc * self.discount * num
>>> adult = ticket()
>>> child = ticket(child=true)
>>> print("2個** + 1個小孩平日票價為:%.2f" % (adult.calcprice(2) + child.calcprice(1)))
2個** + 1個小孩平日票價為:250.00
再舉乙個例子~定義乙個棧(stack)類,用於模擬一種具有後進先出(lifo)的資料結構。至少需要有以下方法。
print('警告:棧為空!')
else:
return self.stack.pop()
deftop(self):
ifnot self.stack:
print('警告:棧為空!')
else:
return self.stack[-1]
defbottom
(self):
ifnot self.stack:
print('警告:棧為空!')
else:
return self.stack[0]
python 之 類和物件
類和物件是物件導向程式設計的 兩個 核心概念 類就相當於製造飛機時的圖紙,是乙個模板,是負責建立物件的 物件就相當於用圖紙製造的飛機 在程式開發中,應該先有類,再有物件 只有乙個,而物件可以有很多個 在使用面相物件開發前,應該首先分析需求,確定一下,程式中需要包含哪些類!在程式開發中,要設計乙個類,...
Python學習之類和物件
類 是乙個函式包。類中可以放置函式和變數,類中的函式可以很方便的使用類中的變數。在類中被定義的函式被稱為類的 方法 描述的是這個類能做什麼。我們使用類名.函式名 的格式,就可以讓類的方法執行起來。在類中被定義的變數被稱為類的 屬性 使用類名.變數名的格式,可以把類中的屬性的值提取出來。類的屬性可以修...
Python學習之類和物件
人 張三,李四,王五 人是類 張三,李四,王五,是具體的物件 class person def init self,name,birthdy self.name name self.self.birthday birthdy def say self,word print f 說 zhang sha...