類
物件導向程式設計是最有效的軟體編寫方法之一,而類具備這種靈活性.
面向過程程式設計,看重的是解決問題的過程。
面向過程: 程式設計主要用到的是「函式」知識,將每個過程步驟打包成函式,再依次呼叫
建立類
類名一般首字母要大寫
// a code block
# 語法:建立乙個名為「classname」的類,類名一般首字母要大寫,(): 不能丟
class classname():
# 如定義乙個名為'狗'的類,可以寫成class dog():
# 規範:class語句後續的**塊要縮排
def function1():
# 定義類中的函式1
var foo = 'bar';
既然【類】是乙個函式包,所以乙個類中可以放置一堆函式
// a code block
class lucky():
def tuple0(self): #self用於關聯類與函式間的聯絡,self的取值不是唯一的,你也可以取name這種,但是在python界幾乎預設self,所以為了規範化還是用self
print('時光易逝,年華不再')
def set0(self):
print('越努力越幸運')
def kay0(self):
print('越難的事,越有意義')
def conten(self):
print('時光易逝,只爭朝夕')
k=lucky() #啟動類需要例項化,這就是也self關聯到的,有self才能例項化
k.tuple0()
k.set0()
k.kay0()
k.conten()
var foo = 'bar';
// an highlighted block
時光易逝,年華不再
越努力越幸運
越難的事,越有意義
時光易逝,只爭朝夕
var foo =
'bar'
;
繼承:子類自動共享父類之間資料和方法的機制
// a code block
class mylist(list):
pass #表示什麼也不幹
lst = mylist([1,5,2,7,8])
lst.sort() #sort()函式表示對列表進行排列
print(lst)
var foo = 'bar';
// an highlighted block[1
,2,5
,7,8
,9]var foo =
'bar'
;
多型:不同物件對同一方法響應不同的行動
// a code block
class animal:
def run(self): #同過run的例項化控制下面的子類
raise attributeerror('子類必須實現這個方法')
class people(animal):
def run(self):
print('人正在走')
class pig(animal):
def run(self):
print('pig is walking')
class dog(animal):
def run(self):
print('dog is running')
def func(animal):
animal.run()
func(pig())
# pig is walking
var foo = 'bar';
// an highlighted block
pig is walking
var foo =
'bar'
;
類的方法與普通的函式只有乙個特別的區別 —— 它們必須有乙個額外的第乙個引數名稱(對應於該例項,即該物件本身),按照慣例它的名稱是 self。在呼叫方法時,我們無需明確提供與引數 self 相對應的引數
// a code block
class ball:
def setname(self, name):
self.name = name
def kick(self):
print("我叫%s,該死的,誰踢我..." % self.name)
a = ball()
a.setname("球a")
b=ball()
name=input('可用input函式設定手動輸入:')
b.setname(name)
a.kick()
b.kick()
var foo = 'bar';
// an highlighted block
我叫球a
,該死的,誰踢我...
我叫李海,該死的,誰踢我...
var foo =
'bar'
;
python 的魔法方法
據說,python 的物件天生擁有一些神奇的方法,它們是物件導向的 python 的一切…
它們是可以給你的類增加魔力的特殊方法…
如果你的物件實現了這些方法中的某乙個,那麼這個方法就會在特殊的情況下被 python 所呼叫,而這一切都是自動發生的…
類有乙個名為__init__(self[, param1, param2…])的魔法方法,該方法在類例項化時會自動呼叫。
// a code block
class ball:
def __init__(self, name):
self.name = name
def kick(self):
print("我叫%s,該死的,誰踢我..." % self.name)
def lucky(self):
print("我叫%s,該死的,誰踢我..." % self.name) #可設定多個,靈活應用
a = ball("球a")
b = ball("球b")
a.kick()
# 我叫球a,該死的,誰踢我...
b.lucky()
# 我叫球b,該死的,誰踢我...
var foo = 'bar';
// an highlighted block
我叫球a
,該死的,誰踢我...
我叫球b
,該死的,誰踢我...
var foo =
'bar'
;
繼承
編寫類時,不一定需要從新開始寫。如果你要編寫兩個類時,資料之間可以互相用,可以使用繼承。乙個類繼承另乙個類時,他將自動獲得另乙個類的屬性和方法,原有的稱為父類,新的稱為子類。子類繼承父類的所有屬性和方法,同時還可以定義自己的屬性和方法.
// a code block
class 基礎機械人():
def __init__(self,引數):
self.姓名 = 引數
def 自報姓名(self):
print('我是' + self.姓名 + '!')
def 賣萌(self):
print('主人,求抱抱!')
class 高階機械人(基礎機械人):
def 自報姓名(self):
print('我是高階機械人' + self.姓名 + '!')
def 賣萌(self):
print('主人,每次想到怎麼欺負你的時候,就感覺自己全身biubiubiu散發著智慧型的光芒!')
#1安迪=基礎機械人('安迪')
安迪.自報姓名()
安迪.賣萌()
#2安迪 = 高階機械人('安迪') #同一資料的不同應用
安迪.自報姓名()
安迪.賣萌()
var foo = 'bar';
// an highlighted block
#1我是安迪!
主人,求抱抱!
#2我是高階機械人安迪!
主人,每次想到怎麼欺負你的時候,就感覺自己全身biubiubiu散發著智慧型的光芒!
var foo =
'bar'
;
阿里雲天池Python訓練營 學習day06
python 中set與dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。注意,key為不可變型別,即可雜湊的值。num print type num num print type num 從結果發現集合的兩個特點 無序 unordere...
天池python訓練營Day4
學習python過程中我們會遇到大量的資料,這時候列表就可以發揮它的作用,儲存大量資料,讓計算機去讀取和操作.a code block list i 小軍 小紅 小李 小軍 小紅 小李 是乙個列表,小紅 等是列表裡的元素 var foo bar 從列表裡提取元素 a code block list ...
天池python訓練營Day05
天池python訓練營day05 字串 字串就是一系列字元,在python中,用引號括起的是字串,其中的引號可以是單引號,也可以是雙引號,如下所示 a code block 字串樣式 the sun is shining brightly the sun is shining brightly 字串...