-
@classmethod
定義類方法書(shū)上沒(méi)講。
?@classmethod ????def?set_localtion(cls,?localtion): ????????cls.__localtion?=?localtion ????@classmethod ????def?get_localtion(cls): ????????return?cls.__localtion
##常用cls表示類本身,cls__localtion相當(dāng)于類名__localtion
查看全部 -
任務(wù)
把Animal類的age、name、localtion定義成私有屬性,并定義對(duì)應(yīng)的方法修改和獲取他們的值。
?不會(huì)了怎么辦
參考答案:
class?Animal(object): ????def?__init__(self,?name,?age,?localtion): ????????self.__name?=?name ????????self.__age?=?age ????????self.__localtion?=?localtion ????def?set_name(self,?name): ????????self.__name?=?name ????def?get_name(self): ????????return?self.__name ????def?set_age(self,?age): ????????self.__age?=?age ????def?get_age(self): ????????return?self.__age ????def?set_localtion(self,?localtion): ????????self.__localtion?=localtion ????def?get_localtion(self): ????????return?self.__localtion
#答案沒(méi)想出來(lái)
查看全部 -
2-6~~2-7:
主要再講公有和私有屬性,(屬性前加上__,無(wú)法從外部訪問(wèn),但是可以在內(nèi)部訪問(wèn))詳情可以參考書(shū)上p147
查看全部 -
請(qǐng)給 Animal類添加一個(gè)類屬性 count,每創(chuàng)建一個(gè)實(shí)例,count 屬性就加 1,這樣就可以統(tǒng)計(jì)出一共創(chuàng)建了多少個(gè) Animal的實(shí)例。
#第一次沒(méi)做出來(lái),可以再試著做一遍
查看全部 -
class?Animal(object): ????pass dog?=?Animal() cat?=?Animal() dog.name?=?'wangwang' dog.age?=?1 cat.name?=?'mimi' cat.age?=?3
#賦予實(shí)列方法,書(shū)上沒(méi)有
查看全部 -
class Animal(object):
? ? pass
dog = Animal()
cat = Animal()
dog.name = 'wangwangwang'
dog.age = 3
dog.sex = 'boy'
cat.name = 'miaomiao'
cat.age = 4
cat.sex = 'girl'
print(dog.name)
print(dog.age)
print(cat.age)
print(cat.name)
查看全部 -
# Enter a code
class Dongwu:
? ? pass
dog=Dongwu()
cat=Dongwu()
print(dog)
print(cat)
print(dog==cat)
查看全部 -
在定義繼承類的時(shí)候,有幾點(diǎn)是需要注意的:
class Student()定義的時(shí)候,需要在括號(hào)內(nèi)寫(xiě)明繼承的類Person
在__init__()方法,需要調(diào)用super(Student, self).__init__(name, gender),來(lái)初始化從父類繼承過(guò)來(lái)的屬性
查看全部 -
和實(shí)例方法不同的是,這里有兩點(diǎn)需要特別注意:
類方法需要使用@classmethod來(lái)標(biāo)記為類方法,否則定義的還是實(shí)例方法
類方法的第一個(gè)參數(shù)將傳入類本身,通常將參數(shù)名命名為 cls,上面的 cls.__localtion 實(shí)際上相當(dāng)于Animal.__localtion。
查看全部 -
和實(shí)例方法不同的是,這里有兩點(diǎn)需要特別注意:
類方法需要使用@classmethod來(lái)標(biāo)記為類方法,否則定義的還是實(shí)例方法
類方法的第一個(gè)參數(shù)將傳入類本身,通常將參數(shù)名命名為 cls,上面的 cls.__localtion 實(shí)際上相當(dāng)于Animal.__localtion。
? ??? ?因?yàn)槭窃陬惿险{(diào)用,而非實(shí)例上調(diào)用,因此類方法無(wú)法獲得任何實(shí)例變量,只能獲得類的引用。
查看全部 -
在外部訪問(wèn)私有屬性將會(huì)拋出異常,提示沒(méi)有這個(gè)屬性。
雖然私有屬性無(wú)法從外部訪問(wèn),但是,從類的內(nèi)部是可以訪問(wèn)的。私有屬性是為了保護(hù)類或?qū)嵗龑傩圆槐煌獠课廴径O(shè)計(jì)的。查看全部 -
在定義 Person 類時(shí),可以為Person類添加一個(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
需要注意的是,__init__() 方法的第一個(gè)參數(shù)必須是 self(也可以用別的名字,但建議使用習(xí)慣用法),后續(xù)參數(shù)則可以自由指定,和定義函數(shù)沒(méi)有任何區(qū)別。
定義類后,就可以相應(yīng)的實(shí)例化對(duì)象了,需要注意的是,在實(shí)例化的時(shí)候,需要提供除self以外的所有參數(shù)。查看全部 -
創(chuàng)建實(shí)例使用類名+(),類似函數(shù)調(diào)用的形式創(chuàng)建:
?class?Person(object):??pass?xiaohong?=?Person()?xiaoming?=?Person()
查看全部 -
從定義上來(lái)講,Student和Teacher都擁有來(lái)自父類Person繼承的who()方法,以及自己定義的who()方法。但是在實(shí)際調(diào)用的時(shí)候,會(huì)首先查找自身的定義,如果自身有定義,則優(yōu)先使用自己定義的函數(shù);如果沒(méi)有定義,則順著繼承鏈向上找。
查看全部 -
一個(gè)實(shí)例可以看成它本身的類型,也可以看成它父類的類型。
查看全部
舉報(bào)