Python 之類和物件(8)

2021-08-14 06:55:10 字數 3853 閱讀 1301

物件導向(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...