您好,登錄后才能下訂單哦!
類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。
類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數(shù)體之外。類變量通常不作為實例變量使用。
數(shù)據(jù)成員:類變量或者實例變量, 用于處理類及其實例對象的相關(guān)的數(shù)據(jù)。
方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
局部變量:定義在方法中的變量,只作用于當(dāng)前實例的類。
實例變量:在類的聲明中,屬性是用變量來表示的。這種變量就稱為實例變量,是在類聲明的內(nèi)部但是在類的其他成員方法之外聲明的。
繼承:即一個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設(shè)計:一個Dog類型的對象派生自Animal類,這是模擬"是一個(is-a)"關(guān)系(例圖,Dog是一個Animal)。
實例化:創(chuàng)建一個類的實例,類的具體對象。
方法:類中定義的函數(shù)。
*對象:通過類定義的數(shù)據(jù)結(jié)構(gòu)實例。對象包括兩個數(shù)據(jù)成員(類變量和實例變量)和方法。
在前面的章節(jié)我們已經(jīng)了解了面向?qū)ο蟮娜腴T知識,知道了如何定義類,如何創(chuàng)建對象以及如何給對象發(fā)消息。為了能夠更好的使用面向?qū)ο缶幊趟枷脒M行程序開發(fā),我們還需要對Python中的面向?qū)ο缶幊踢M行更為深入的了解。
時間打印:
import time
time.sleep()
降序:
a.sort(reverse=True)
end=' ' 變?yōu)橐恍?/p>
之前我們討論過Python中屬性和方法訪問權(quán)限的問題,雖然我們不建議將屬性設(shè)置為私有的,但是如果直接將屬性暴露給外界也是有問題的,比如我們沒有辦法檢查賦給屬性的值是否有效。我們之前的建議是將屬性命名以單下劃線開頭,通過這種方式來暗示屬性是受保護的,不建議外界直接訪問,那么如果想訪問屬性可以通過屬性的getter(訪問器)和setter(修改器)方法進行對應(yīng)的操作。如果要做到這點,就可以考慮使用@property包裝器來包裝getter和setter方法,使得對屬性的訪問既安全又方便,代碼如下所示。
使用裝飾器的時候,需要注意:
**1. 裝飾器名,函數(shù)名需要一致.
class Person(object):
def __init__(self, name, age):
self._name = name
self._age = age
# 訪問器 - getter方法
@property
def name(self):
return self._name
# 訪問器 - getter方法
@property
def age(self):
return self._age
# 修改器 - setter方法
@age.setter
def age(self, age):
self._age = age
def play(self):
if self._age <= 16:
print('%s正在玩飛行棋.' % self._name)
else:
print('%s正在玩斗地主.' % self._name)
def main():
person = Person('王大錘', 12)
person.play()
person.age = 22
person.play()
# person.name = '白元芳' # AttributeError: can't set attribute
if __name__ == '__main__':
main()
class Num(object):
def __init__(self):
self.a = 1000
def A(self):
print(self.b)
num = Num()
num.b =1000000
#print(num.a)
print(num.b)
num.A()
我們講到這里,不知道大家是否已經(jīng)意識到,Python是一門[動態(tài)語言]。通常,動態(tài)語言允許我們在程序運行時給對象綁定新的屬性或方法,當(dāng)然也可以對已經(jīng)綁定的屬性和方法進行解綁定。但是如果我們需要限定自定義類型的對象只能綁定某些屬性,可以通過在類中定義slots變量來進行限定。需要注意的是slots的限定只對當(dāng)前類的對象生效,對子類并不起任何作用。
class Person(object):
# 限定Person對象只能綁定_name, _age和_gender屬性
__slots__ = ('_name', '_age', '_gender')
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
@property
def age(self):
return self._age
@age.setter
def age(self, age):
self._age = age
def play(self):
if self._age <= 16:
print('%s正在玩飛行棋.' % self._name)
else:
print('%s正在玩斗地主.' % self._name)
def main():
person = Person('王大錘', 22)
person.play()
person._gender = '男'
#AttributeError: 'Person' object has no attribute '_is_gay'
#person._is_gay = True
私有:
class Name(object):
def init(self,a,b):
self.a=a
self.b=b
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。