-
操作類的私有屬性,則應(yīng)該定義類的方法
1.類方法需要使用@classmethod來(lái)標(biāo)記為類方法,否則定義的還是實(shí)例方法
2.類方法的第一個(gè)參數(shù)將傳入類本身,通常將參數(shù)名命名為 cls,上面的 cls.__localtion 實(shí)際上相當(dāng)于Animal.__localtion
查看全部 -
self是一個(gè)引用,指向調(diào)用該方法的實(shí)例對(duì)象本身.
可以通過(guò)定義類或者實(shí)例的方法來(lái)操作私有屬性查看全部 -
不能被外部訪問(wèn)的屬性稱為私有屬性。私有屬性是以雙下劃線'__'開頭的屬性。
查看全部 -
如果類屬性和實(shí)例屬性名字相同時(shí),實(shí)例屬性的優(yōu)先級(jí)是要高于類屬性的
查看全部 -
類屬性有且只有一份,可以動(dòng)態(tài)添加和修改的.
查看全部 -
在定義? 類時(shí),可以為類添加一個(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查看全部 -
class person:
? ?def __init__(self, name, gender):
? ? ? ?self.name = name
? ? ? ?self.gender = gender
? ?def who(self):
? ? ? ?return 'i am a person , my name is %s' % self.name
class student(person):
? ?def __init__(self, name, gender, score):
? ? ? ?super(student, self).__init__(name, gender)
? ? ? ?self.score = score
? ?def who(self):
? ? ? ?return 'i am a student, my name is %s' % self.name
class teacher(person):
? ?def __init__(self, name, gender, course):
? ? ? ?super(teacher, self).__init__(name, gender)
? ? ? ?self.course = course
? ?def who(self):
? ? ? ?return 'i am a teacher, my name is %s' % self.name
class skm:
? ?def __init__(self, name):
? ? ? ?self.name = name
? ?def who(self):
? ? ? ?return ' i can play'
class baskm(skm, teacher):
? ?def __init__(self, name, course):
? ? ? ?super(baskm, self).__init__(name)
? ? ? ?self.course = course
? ?def who(self):
? ? ? ?return self.name + ' is a teacher,'+ self.name +' can play ' + self.course
class fbskm(skm, student):
? ?def __init__(self, name, course):
? ? ? ?super(fbskm, self).__init__(name)
? ? ? ?self.course = course
? ?def who(self):
? ? ? ?return self.name + ' is a student,'+ self.name +' can play ' + self.course
p1 = baskm('bob', 'basketball')
print(p1.who())
p2 = fbskm('Lily','football')
print(p2.who())查看全部 -
String.capitalize()可以將字符串變?yōu)槭鬃帜复髮?,其他小寫的?guī)范查看全部
-
客戶端和服務(wù)端會(huì)有一些不一樣。
服務(wù)端建立需要四個(gè)步驟:新建socket、綁定IP和端口(bind)、監(jiān)聽(tīng)連接(listen)、接受連接(accept)。
客戶端建立則簡(jiǎn)單一些,僅需兩個(gè)步驟:新建socket、連接服務(wù)端(connect)。查看全部 -
_str__是面向用戶的,而__repr__面向程序員,可以理解為:__str__是給用戶使用的,而__repr__是提供給程序員用于調(diào)試程序用的。
__str__和__repr__這兩個(gè)方法都是用于顯示的。
查看全部 -
python實(shí)例屬性的初始化
在定義 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):注:(def后需要一個(gè)空格,init左右兩邊都是雙下劃線)
? ? ? ?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ù)。xiaoming = Person('Xiao Ming', 'boy', 13)
xiaohong = Person('Xiao Hong', 'girl', 14)而訪問(wèn)這些屬性的方式和之前的一樣:
print(xiaohong.name)
print(xiaohong.sex)
print(xiaohong.age)
# 但當(dāng)訪問(wèn)不存在的屬性時(shí),依然會(huì)報(bào)錯(cuò)要特別注意的是,初學(xué)者定義__init__()方法常常忘記了 self 參數(shù)
這種情況下,如果還是如下實(shí)例化,將會(huì)報(bào)錯(cuò)。
查看全部 -
Python實(shí)例屬性的定義
雖然前面我們已經(jīng)通過(guò)Person類創(chuàng)建出xiaoming、xiaohong等實(shí)例,但是這些實(shí)例看上去并沒(méi)有任何區(qū)別。在現(xiàn)實(shí)世界中,一個(gè)人擁有名字、性別、年齡等等的信息,在Python中,可以通過(guò)以下的方式賦予實(shí)例這些屬性,并且把這些屬性打印出來(lái)。
xiaohong.name = 'xiaohong' xiaohong.sex = 'girl' xiaohong.age = 13 print(xiaohong.name) print(xiaohong.sex) print(xiaohong.age)
除此以外,這些屬性也可以和普通變量一樣進(jìn)行運(yùn)算。比如xiaohong長(zhǎng)大了一歲:
xiaohong.age = xiaohong.age + 1
查看全部 -
python類的定義與實(shí)例化
通過(guò)class關(guān)鍵字定義一個(gè)類,比如我們需要定義一個(gè)人的類。按照 Python 的編程習(xí)慣,類名以大寫字母開頭。因此可以這樣定義:
class Person: ?pass
注意,在這個(gè)Person類的定義里面,并沒(méi)有繼承任何類,除了這樣定義以外,還可以有以下兩種定義方式。
class Person(): pass? ? ? class Person(object): ?pass
定義了類之后,就可以對(duì)類進(jìn)行實(shí)例化了,實(shí)例化是指,把抽象的類,賦予實(shí)物的過(guò)程。比如,定義好Person這個(gè)類后,就可以實(shí)例化多個(gè)Person出來(lái)了。
創(chuàng)建實(shí)例使用類名+(),類似函數(shù)調(diào)用的形式創(chuàng)建:class Person(object): ?pass xiaohong = Person() xiaoming = Person()
?
查看全部 -
r1 + r2 就相當(dāng)于r1.__add__(r2)
Rational(1, 2)????????? Rational(2, 3)
?????????????? p q????????????????????????? p q
r1 = Rational(1, 2)
中的(1,2)代入到Rational的__init_中,此時(shí)
即為:self.p = 1
????????? self.q = 2
?self.p * r.q + self.q * r.p, self.q * r.q
????? 1? * 3??? +?? 2???? * 2 ,??? 2???? *?? 3
??????????????????? (7?????????????? ,????????? 6)
查看全部 -
裝飾器@不好理解
#funA 作為裝飾器函數(shù)
def funA(fn):
#...
fn() # 執(zhí)行傳入的fn參數(shù)
#...
return '...'
@funA
def funB():
#...
上面程序完全等價(jià)于下面的程序:
def funA(fn):
#...
fn() # 執(zhí)行傳入的fn參數(shù)
#...
return '...'
def funB():
#...
funB = funA(funB)
通過(guò)比對(duì)以上 2 段程序不難發(fā)現(xiàn),使用函數(shù)裝飾器 A() 去裝飾另一個(gè)函數(shù) B(),其底層執(zhí)行了如下 2 步操作:
將 B 作為參數(shù)傳給 A() 函數(shù);
將 A() 函數(shù)執(zhí)行完成的返回值反饋回? B。
查看全部 -
對(duì)于可調(diào)用對(duì)象,實(shí)際上“名稱()”可以理解為是“名稱.__call__()”的簡(jiǎn)寫
Python 中,凡是可以將 () 直接應(yīng)用到自身并執(zhí)行,都稱為可調(diào)用對(duì)象。可調(diào)用對(duì)象包括自定義的函數(shù)、Python 內(nèi)置函數(shù)以及本節(jié)所講的類實(shí)例對(duì)象。
查看全部 -
官方給的答案不改變?cè)斜碇械膬?nèi)容。
查看全部
舉報(bào)