-
加雙下劃線?__ 的目的大概就是防止編碼過(guò)程中試圖使用實(shí)例修改類(lèi)屬性,加上__的話,在做這樣的嘗試時(shí)會(huì)報(bào)錯(cuò),防止編碼者在達(dá)不到目的的情況下還察覺(jué)不到錯(cuò)誤
查看全部 -
定義類(lèi)屬性可以直接在 class 中定義,比如在前面的Animal類(lèi)中,加入地域的類(lèi)屬性:
class?Animal(object): ????localtion?=?'Asia' ????def?__init__(self,?name,?age): ????????self.name?=?name ????????self.age?=?age
此后,通過(guò)Animal()實(shí)例化的所有對(duì)象,都可以訪問(wèn)到localtion,并且得到唯一的結(jié)果。
dog?=?Animal('wangwang',?1) cat?=?Animal('mimi',?3) print(dog.localtion)?#?==>?Asia print(cat.localtion)?#?==>?Asia #?類(lèi)屬性,也可以通過(guò)類(lèi)名直接訪問(wèn) print(Animal.localtion)?#?==>?Asia
類(lèi)屬性也是可以動(dòng)態(tài)添加和修改的,需要注意的是,因?yàn)轭?lèi)屬性只有一份,所以改變了,所有實(shí)例可以訪問(wèn)到的類(lèi)屬性都會(huì)變更:
查看全部 -
在定義 Person 類(lèi)時(shí),可以為Person類(lèi)添加一個(gè)特殊的__init__()方法,當(dāng)創(chuàng)建實(shí)例時(shí),__init__()方法被自動(dòng)調(diào)用,我們就能在此為每個(gè)實(shí)例都統(tǒng)一加上以下屬性:
class?Person(object): ????def?__init__(self,?name,?sex,?age): ????????self.name?=?name ????????self.sex?=?sex ????????self.age?=?age
在實(shí)例化的時(shí)候,需要提供除self以外的所有參數(shù)。
xiaoming?=?Person('Xiao?Ming',?'boy',?13) xiaohong?=?Person('Xiao?Hong',?'girl',?14)
查看全部 -
這些屬性也可以和普通變量一樣進(jìn)行運(yùn)算。比如xiaohong長(zhǎng)大了一歲:
xiaohong.age?=?xiaohong.age?+?1
查看全部 -
在Python中,通過(guò)class關(guān)鍵字定義一個(gè)類(lèi),比如我們需要定義一個(gè)人的類(lèi)。按照 Python 的編程習(xí)慣,類(lèi)名以大寫(xiě)字母開(kāi)頭。因此可以這樣定義:
?class?Person:??pass
定義了類(lèi)之后,就可以對(duì)類(lèi)進(jìn)行實(shí)例化了,實(shí)例化是指,把抽象的類(lèi),賦予實(shí)物的過(guò)程。比如,定義好Person這個(gè)類(lèi)后,就可以實(shí)例化多個(gè)Person出來(lái)了。
創(chuàng)建實(shí)例使用類(lèi)名+(),類(lèi)似函數(shù)調(diào)用的形式創(chuàng)建:?class?Person(object):??pass?xiaohong?=?Person()?xiaoming?=?Person()
查看全部 -
str() 化為字符型
查看全部 -
# Enter a code
import time
def performance(f):
? ? def fn(*args,**kwargs):
? ? ? ? t1 = time.time()
? ? ? ? r = f(*args,**kwargs)
? ? ? ? t2 = time.time()
? ? ? ? print('call %s() in %fs' % (f.__name__, (t2-t1)))
? ? ? ? return r
? ? return fn
? ??
@performance
def factorial(n):
? ? return reduce(lambda x,y: x*y, range(1, n+1))
print(factorial(10))
查看全部 -
繼承查看全部
-
Python類(lèi)的定義與實(shí)例化 在Python中,通過(guò)class關(guān)鍵字定義一個(gè)類(lèi),比如我們需要定義一個(gè)人的類(lèi)。按照 Python 的編程習(xí)慣,類(lèi)名以大寫(xiě)字母開(kāi)頭。因此可以這樣定義: class Person: pass 注意,在這個(gè)Person類(lèi)的定義里面,并沒(méi)有繼承任何類(lèi),除了這樣定義以外,還可以有以下兩種定義方式。 class Person(): pass class Person(object): pass 這三種情況有什么區(qū)別呢?在Python3中,是沒(méi)有區(qū)別的,但是在Python2中,則有一定的區(qū)別。 在Python2中,對(duì)于第一種定義的方法,Person類(lèi)只有有限的幾個(gè)內(nèi)建函數(shù)'__doc__', '__module__', 'name',而對(duì)于第二種、第三種定義的方法,則會(huì)繼承Python object對(duì)象的更多的內(nèi)建函數(shù),可以更便捷的操作對(duì)象。這是Python2版本的差異。在Python3中,我們只需要知道這三種方式都可以定義一個(gè)類(lèi)即可。 定義了類(lèi)之后,就可以對(duì)類(lèi)進(jìn)行實(shí)例化了,實(shí)例化是指,把抽象的類(lèi),賦予實(shí)物的過(guò)程。比如,定義好Person這個(gè)類(lèi)后,就可以實(shí)例化多個(gè)Person出來(lái)了。 創(chuàng)建實(shí)例使用類(lèi)名+(),類(lèi)似函數(shù)調(diào)用的形式創(chuàng)建: class Person(object): pass xiaohong = Person() xiaoming = Person() 任務(wù) 請(qǐng)練習(xí)定義一個(gè)動(dòng)物類(lèi),并創(chuàng)建出兩個(gè)實(shí)例dog, cat,打印實(shí)例,再比較兩個(gè)實(shí)例是否相等。 index.py # Enter a code 本節(jié)編程練習(xí)不計(jì)算學(xué)習(xí)進(jìn)度,請(qǐng)電腦登錄imooc.com操作查看全部
-
什么是面向?qū)ο缶幊?查看全部
-
面相對(duì)象查看全部
舉報(bào)