2019-08-09

class Human:
"""
說明文檔
類型:人類

"""
num = 61

def __init__(self, name, gender, age):
    self.name = name
    self.gender = gender
    self.age = age

def eat(self, food):
    print("%s在吃%s" % (self.name, food))

p1 = Human("小明", "man", 19)
print(type(Human)) # <class 'type'>
print(Human.name) # Human

1.name

"""
類的字段,類的名字:類名稱.name
"""

2.doc

"""獲取類的說明文檔"""
print(Human.doc)

說明文檔

類型:人類

3.class

"""對(duì)象屬性:對(duì)象.class 獲取對(duì)象對(duì)應(yīng)的類豹芯,返回的是類,相當(dāng)于type(對(duì)象)"""
print(p1.class) # <class 'main.Human'>
print(type(p1)) # <class 'main.Human'>

4.dict

"""對(duì)象屬性冯凹,對(duì)象.dict,將對(duì)象中所有的屬性轉(zhuǎn)化為字典
類的字段圾另,柳譬;類.dict,將類轉(zhuǎn)換成字典干签,字典中的元素是類中所有的字段和對(duì)應(yīng)的值
"""
print(p1.dict)
print(Human.dict)

5類的答應(yīng)的定制

"""
1.重寫str方法:返回值就是對(duì)應(yīng)的打印結(jié)果
2.重寫repr方法碗旅,返回值就是對(duì)應(yīng)的打印結(jié)果
"""

def str(self):
return "<" + str(self.dict)[1:-1] + ">"

6 將字典轉(zhuǎn)換為對(duì)象

class Person:
def init(self, dict1: dict):
for key in dict1:
setattr(self, key, dict1[key])

7 module

"""獲取當(dāng)前類是在哪個(gè)模塊中聲明的贷揽,返回的是模塊的名字"""
print(p1.module)

8 bases

"""類的字段棠笑;類.bases:獲取當(dāng)前類的父類,返回的是一個(gè)元組"""

8私有化

"""
訪問權(quán)限:公開禽绪,保護(hù)蓖救,私有
公開:公開的屬性和方法在類的內(nèi)部,外部以及子類使用印屁,也能被繼承循捺;
保護(hù):保護(hù)的屬性和方法在類的內(nèi)部能夠使用,在外部不能被使用雄人,但是可以被繼承从橘;
私有:私有屬性和方法只能在類的內(nèi)部使用,外部不能使用础钠,也不可以被繼承恰力。
python中的所有屬性和方法本質(zhì)都是公開的,私有化是假的私有化旗吁,只是提示這個(gè)屬性或者方法在外部不能使用踩萎,也不要繼承。

私有化的方法:在需要私有化的屬性名或者方法名前加“”(不能以“”結(jié)尾)
python私有化的原理:在私有屬性和方法前加了“_類名”
"""

9 屬性的gettr 和 settr的用法

"""
當(dāng)我們需要在獲取屬性值之前做點(diǎn)別的事情很钓,就需要給屬性添加getter香府;
當(dāng)我們需要給屬性賦值之前做點(diǎn)別的事情董栽,就需要給屬性添加setter;
"""

class Human:
def init(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age # 帶的屬性

@property
def age(self):
    if self._age < 18:
        return "青年"

@age.setter
def age(self, value):
    self.age = value

p1 = Human("小明", "男", 17)
print(p1.age)
print(p1.age, 200)

給屬性添加getter:

1.給需要加getter的屬性下添加_企孩;

2.在@property裝飾器后聲明一個(gè)對(duì)象方法锭碳,要求方法名為屬性去掉下劃線,函數(shù)除了self之后不需要其他參數(shù)柠硕,函數(shù)的返回值就是獲取這個(gè)屬性的時(shí)候得到的值工禾;

3.在外部使用屬性的時(shí)候运提,通過“對(duì)象.不帶下劃線”的形式去使用蝗柔。

給屬性添加setter:屬性添加setter之前必須先添加getter

1.保證屬性名前有_;

2.需要一個(gè)self以外的參數(shù),不需要返回值

3.在外部使用屬性的時(shí)候民泵,通過“對(duì)象.下劃線使用”

本質(zhì):當(dāng)給屬性賦值的時(shí)候癣丧,實(shí)質(zhì)是調(diào)用setter對(duì)應(yīng)方法。

class Rectangle:
def init(self, width, long):
self._width = width
self._long = long
self.area = width * long
self.perimeter = 2 * (long + width)

@property
def width(self):
    return self._width

@width.setter
def width(self, value):
    if not isinstance(value, int) or isinstance(value, float):
        raise ValueError
    if value < 0:
        raise ValueError
    self._width = value

@property
def long(self):
    return self._long

@long.setter
def long(self, value):
    if not isinstance(value, int) or isinstance(value, float):
        raise ValueError
    if value < 0:
        raise ValueError
    self._long = value

rect = Rectangle(12, 34)
print(rect.width, rect._long, rect.area, rect.perimeter)

9 類方法

"""
對(duì)象方法:
a.聲明:直接聲明
b.用對(duì)象調(diào)用
c.有指向當(dāng)前對(duì)象的self
d.什么時(shí)候用:如果實(shí)現(xiàn)函數(shù)的功能需要用到對(duì)象屬性栈妆,就使用對(duì)象方法
類方法:
a.聲明:聲明在@classmethod后
b.用類來(lái)調(diào)用
c.有指向當(dāng)前類的參數(shù)cls胁编,調(diào)用的時(shí)候不用傳參,系統(tǒng)會(huì)自動(dòng)將當(dāng)前類傳給他鳞尔。誰(shuí)調(diào)用就指向誰(shuí)嬉橙。如果是對(duì)象就指向?qū)ο蟮念悺?br> d.什么時(shí)候用:實(shí)現(xiàn)函數(shù)的功能不需要對(duì)象屬性,但是需要類的字段
靜態(tài)方法:
a.聲明:聲明在@staticmethod后
b.用類來(lái)調(diào)用
c.類中的普通方法寥假,沒有默認(rèn)參數(shù)
d.什么時(shí)候用:實(shí)現(xiàn)函數(shù)功能既不需要類也不需要對(duì)象市框,就使用靜態(tài)方法
"""

class Person1:
def init(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age

def eat(self):
    print("吃")

@classmethod
def func1(cls):
    print("這是一個(gè)類方法")

@staticmethod
def func2():
    print("jsodfhkds")

print(Person1.func1())
print(Person1.func2())

10 繼承

"""
繼承:讓子類直接擁有父類的屬性和方法
子類:繼承者
父類、超類:被繼承者
1.語(yǔ)法:
class 類名(父類1糕韧,父類2...):
說明文檔
類的內(nèi)容
2.說明:
()枫振,如果中間省略相當(dāng)于繼承自基類(object類)
父類:一個(gè)類的父類可以有多個(gè),一個(gè)父類的子類也可以有多個(gè)萤彩,但是一般情況下只要一個(gè)粪滤。
在子類中可以用super().父類方法,調(diào)用父類中的方法只能在對(duì)象方法和類方法中應(yīng)用,靜態(tài)方法不適用;
在子類中添加對(duì)象屬性雀扶,需要先通過super()去調(diào)用父類的init()方法來(lái)繼承父類的屬性杖小。

"""

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市愚墓,隨后出現(xiàn)的幾起案子予权,更是在濱河造成了極大的恐慌,老刑警劉巖转绷,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伟件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡议经,警方通過查閱死者的電腦和手機(jī)斧账,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門谴返,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咧织,你說我怎么就攤上這事嗓袱。” “怎么了习绢?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵渠抹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我闪萄,道長(zhǎng)梧却,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任败去,我火速辦了婚禮放航,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圆裕。我一直安慰自己广鳍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布吓妆。 她就那樣靜靜地躺著赊时,像睡著了一般。 火紅的嫁衣襯著肌膚如雪行拢。 梳的紋絲不亂的頭發(fā)上祖秒,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音剂陡,去河邊找鬼狈涮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸭栖,可吹牛的內(nèi)容都是我干的歌馍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晕鹊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼松却!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起溅话,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晓锻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后飞几,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砚哆,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年屑墨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躁锁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纷铣。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖战转,靈堂內(nèi)的尸體忽然破棺而出搜立,到底是詐尸還是另有隱情,我是刑警寧澤槐秧,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布啄踊,位于F島的核電站,受9級(jí)特大地震影響刁标,放射性物質(zhì)發(fā)生泄漏颠通。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一命雀、第九天 我趴在偏房一處隱蔽的房頂上張望蒜哀。 院中可真熱鬧,春花似錦吏砂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至易核,卻和暖如春匈织,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牡直。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工缀匕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碰逸。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓乡小,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親饵史。 傳聞我的和親對(duì)象是個(gè)殘疾皇子满钟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容