day15 面向?qū)ο?

1.什么是類犯戏,什么是對象
類就是擁有相同功能和相同屬性的對象的集合椒涯;類是抽象的
對象就是類的實例垂蜗;對象是具體的
人是類 伟墙,余婷就是人類的對象
車是類 =樓下停的那輛車

2.類的聲明
類中的內(nèi)容包含:功能(函數(shù))和(變量/屬性)
a.語法
class 類名(父類):
類的內(nèi)容
b.說明
class -Python聲明的關(guān)鍵字
類名 -要求:標識符钾恢,不能是關(guān)鍵字
規(guī)范:駝峰式命名(通過首字母大寫來區(qū)分不同的單詞瓤介,類的首字母必須大寫)
類的內(nèi)容 ——包含類的方法吕喘,屬性和說明文檔
方法就是在類中的函數(shù)
屬性就是變量聲明在類中的變量

3.對象的聲明
語法:
類名() --創(chuàng)建指定的類和對象并且返回


class Person:
    '''
    類的聲明
    '''
    num =1 #類的屬性

    def eat(self):  #類中的方法
        print('恰飯')
# 創(chuàng)建person類對象;p1就是對象
p1 = Person()
#同一個類可以創(chuàng)建多個對象
p2 = Person()


def main():
    pass


if __name__ == '__main__':
    main()

class 類名:
類中的屬性
類中的方法

1.類中的方法
聲明在類中的函數(shù)就是方法
類中的方法包括:對象方法(實例方法)刑桑、類方法氯质、靜態(tài)方法

2.對象方法:
a.直接聲明在類中的方法就是對象方法
有默認參數(shù)self
通過'對象.方法()'的方式來調(diào)用
b.參數(shù)self
當我們通過對象調(diào)用對象方法時,self不需要傳參祠斧,因為系統(tǒng)會將當前對象傳給self
當前對象:調(diào)用當前方法的對象(誰調(diào)用對象方法self就指向誰)
注意:當前類的對象能做的事情self都能做
'''

class Person:
'''
類的聲明
'''
num =1 #類的屬性

def eat(self,food):  #類中的方法
    print('恰飯')
    print('zlp吃%s'%food)
    return '真香闻察!'

創(chuàng)建person類對象;p1就是對象

p1 = Person()
print(p1.eat('屎'))

def main():
    pass

if __name__ == '__main__':
    main()

1.init方法init
init方法是類中一個特殊的對象方法琢锋,專門用來對創(chuàng)建的對象進行初始化的方法辕漂。
當通過類創(chuàng)建對象的時候,系統(tǒng)就會自動調(diào)用init方法

函數(shù)名和類名一樣的函數(shù)就是構(gòu)造方法吴超,專門用來創(chuàng)建對象
Python中聲明類的時候钉嘹,系統(tǒng)還會自動創(chuàng)建這個類對應(yīng)的構(gòu)造方法
當我們構(gòu)造方法的時候,內(nèi)部會先在內(nèi)存中開辟空間保存對象鲸阻;然后用創(chuàng)建的這個對象去調(diào)用init方法跋涣,用來對對象進行初始化;
init方法調(diào)用結(jié)束后鸟悴,返回對象

注意:如果類的init除了self以外還有其他參數(shù)陈辱,那么我們在創(chuàng)建對象的時候需要通過構(gòu)造方法給init方法傳參

def Person(x,y):
對象 = 創(chuàng)建對象
對象.init(x,y)
return 對象

class Person:
    # 類中__開頭并且以__結(jié)尾的方法叫魔法方法细诸。不需要主動調(diào)用沛贪,系統(tǒng)會自動調(diào)用
    def __init__(self):
        print('init被調(diào)用了')

def main():
    p1 = Person()


if __name__ == '__main__':
    main()

""" author = 王果"""
'''
1.什么是對象屬性
類中的屬性分為類的字段和對象屬性
a.對象屬性 --屬性的值會因為對象的不同而不同,這種屬性就應(yīng)該聲明為對象屬性
聲明在init方法中
以'self.屬性 = 值'的方式來聲明 這的屬性就是對象屬性 ————方式
通過'對象.屬性'的方式來使用 --使用
b.類的字段 --屬性的值不會因為對象的不同而不同震贵,這種屬性就聲明成類聲明
直接聲明類的里面利赋,函數(shù)的外面的變量就是類的字段
以'字段名' = '值'
通過'類.字段'的方式來使用
'''

class Person():
# 在init方法中聲明對象屬性
def init(self, name, age):
self.name = name
self.age = age

p1 = Person('zzz', 12)
print(p1.name, p1.age)
print(type(p1))

創(chuàng)建dog類,有屬性名字猩系、類型媚送、年齡
要求創(chuàng)建的對象時候不能給年齡賦值,可以給類型賦值也可不蝙眶,必須給名字賦值

對象方法eat:打印XXX在吃什么

class Dog():
    def __init__(self, name, tpe='tu'):
        self.age = 1
        self.name = name
        self.tpe = tpe

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


p1 = Dog('zlp', '土狗')
p1.eat('屎')
print(p1.age, p1.name, p1.tpe)

練習:聲明矩形,擁有長和寬褪那,擁有方法求面積和求周長

class rectangle():
    def __init__(self,lenth,wide):
        self.lenth = lenth
        self.wide = wide
    def area(self):
        return self.wide*self.lenth
    def peri(self,):
        return (self.lenth+self.wide)*2
q1 = rectangle(5,4)
print(q1.area())
print(q1.peri())

def main():
    pass


if __name__ == '__main__':
    main()

python中的屬性支持增刪改查

class Person:
    def __init__(self,name='',age=0,sex='女'):
        self.name =name
        self.age =age
        self.sex =sex


p1 = Person('曾令鵬')
p2 = Person('雇傭兵')

一幽纷、查:

1.對象.屬性 -獲取指定對象指定屬性;當屬性不存在時候會報錯博敬!
2.getattr(對象,屬性:str友浸,默認值) -獲取指定對象指定屬性值,當屬性不存在時會拿默認值
'''
print(getattr(p1,'age','asasa'))#屬性不存在的時候可以使用getattr

二偏窝、增收恢、改

'''
對象.屬性 = 值 -當屬性存在的時候修改屬性的值武学;屬性不存在就增加屬性值
setattr(對象, 屬性名, 值) - 當屬性存在的是修改屬性的值;屬性不存在的時候添加屬性s
'''
p1.name = 'asasasasaasa'
p1.lenth = '177'
print(p1.name,p1.lenth)

三伦意、刪

'''
del 對象.屬性
delattr (對象火窒,屬性名)
注意:對象屬性額操作,只針對操作的那一個對象驮肉,不會影響其他屬性

del p1.lenth
delattr(p1,'name')

class Dog:
    '__slots魔法'
    __slots__ = ('name','color')#魔法方法熏矿,限制屬性的個數(shù),只能比slots里的少离钝,不能多
    def __init__(self,name='',color='黑色'):
        self.name = name
        self.name = color
內(nèi)置屬性:指的是我們創(chuàng)建的時候系統(tǒng)自動給我們添加的屬性(其實是通過繼承獲取到的)

class Person:
    類的字段
    num =23
    對象屬性
    __slots__ = ('name','age','sex')
    def __init__(self,name='',age=0,sex='男'):
        self.name =name
        self.age =age
        self.sex= sex
    def __repr__(self):
        return '<' + str(self.__dict__)[1:-1]+ 'at ' +hex(id(self))+'>'
p1 = Person('小明',32,'男')

#1.__name__  獲取類的名字票编,打印的是字符串
print(Person.__name__,str(Person.__name__))
#2.__class__  -獲取對象對應(yīng)的類(結(jié)果是類)
my_class = p1.__class__
print(my_class)
#3.__doc__ -獲取類的說明文檔
print(Person.__doc__)
# 4.對象.__dict__
''' 注意:當用slort方法賦值后,對象的__dict__方法失效'''
print(p1.__dict__)
#5.類.__module__  -獲取當前類所在的模塊的模塊名
print(Person.__module__)
#6.類.__bass__  -獲取當前類的父親(元組)
print(Person.__bases__)
#7.定制對象的打印格式(當我們通過print打印一個對象的時候卵渴,實質(zhì)就是打印對象對象調(diào)用__repr__函數(shù)的返回值)
#這個函數(shù)的返回值必須是字符串
print(p1)

1.對象方法:
a.怎么聲明:直接聲明在類型
b.特點:自帶self參數(shù)慧域,調(diào)用的時候不用傳參,誰調(diào)用指向誰
c.怎么調(diào)用:對象浪读,方法()
2.類方法
a.怎么聲明:聲明函數(shù)前加@classmethod
b.特點:自帶默認參數(shù)cls昔榴;調(diào)用的時候不用傳參,系統(tǒng)會自動將當前函數(shù)的類傳給它(誰調(diào)用指向誰)
c.怎么調(diào)用:通過類來調(diào)用瑟啃,類.方法()
d.對象方法能用的方法论泛,類方法都能用

3.靜態(tài)方法
a.怎么聲明:聲明函數(shù)前加@staticmethod
b.特點:沒有默認參數(shù)
c.怎么調(diào)用:通過類來調(diào)用,類.方法

4.在類中怎么選擇使用哪種方法:
如果實現(xiàn)類中的函數(shù)的功能需要使用對象的屬性蛹屿,那么這個函數(shù)就要聲明對象方法屁奏。
實現(xiàn)函數(shù)的功能不需要對象的屬性的前提下,如果需要類的字段错负,就聲明類方法
實現(xiàn)函數(shù)的功能既不需要對象屬性也不需要類的字段就聲明靜態(tài)方法

class Person:

    @staticmethod
    def func3():
        print('我是靜態(tài)方法')

    @classmethod
    def func2(cls):
        print('我是類方法2')

    @classmethod
    def func1(cls):
        p1 = cls()
        print(p1)
        cls.func2()


Person.func1()
Person.func3()

def main():
    pass


if __name__ == '__main__':
    main()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坟瓢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子犹撒,更是在濱河造成了極大的恐慌折联,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件识颊,死亡現(xiàn)場離奇詭異诚镰,居然都是意外死亡,警方通過查閱死者的電腦和手機祥款,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門清笨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刃跛,你說我怎么就攤上這事抠艾。” “怎么了桨昙?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵检号,是天一觀的道長腌歉。 經(jīng)常有香客問我,道長齐苛,這世上最難降的妖魔是什么翘盖? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮脸狸,結(jié)果婚禮上最仑,老公的妹妹穿的比我還像新娘。我一直安慰自己炊甲,他們只是感情好泥彤,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卿啡,像睡著了一般吟吝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颈娜,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天剑逃,我揣著相機與錄音,去河邊找鬼官辽。 笑死蛹磺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的同仆。 我是一名探鬼主播萤捆,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼俗批!你這毒婦竟也來了俗或?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤岁忘,失蹤者是張志新(化名)和其女友劉穎辛慰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體干像,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡帅腌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了麻汰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片速客。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖什乙,靈堂內(nèi)的尸體忽然破棺而出挽封,到底是詐尸還是另有隱情已球,我是刑警寧澤臣镣,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布辅愿,位于F島的核電站,受9級特大地震影響忆某,放射性物質(zhì)發(fā)生泄漏点待。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一弃舒、第九天 我趴在偏房一處隱蔽的房頂上張望癞埠。 院中可真熱鬧,春花似錦聋呢、人聲如沸苗踪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽通铲。三九已至,卻和暖如春器贩,著一層夾襖步出監(jiān)牢的瞬間颅夺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工蛹稍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吧黄,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓唆姐,卻偏偏與公主長得像拗慨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厦酬,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

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

  • P14胆描,優(yōu)化著陸頁,并進行渠道分析仗阅。 P39昌讲,PMF,產(chǎn)品初期分析種子用戶使用產(chǎn)品的情況减噪,及時糾正產(chǎn)品定位短绸,發(fā)現(xiàn)核...
    老鄧V閱讀 149評論 0 0
  • 文字/四季界 圖片/網(wǎng)絡(luò) A▼ 我說實話,我想放棄這場真人秀筹裕。因為我們怎么看都不合適醋闭。 節(jié)目剛播出第一期,網(wǎng)絡(luò)的罵...
    四季界Sunny閱讀 478評論 0 1
  • 充實溫暖的一周朝卒,想著中秋給自己放兩天假证逻,竟然連續(xù)兩日夜不能寐,說病就病抗斤,每隔四到五小時吃一次藥囚企,擅自加大劑量丈咐,終于...
    yyh2018閱讀 197評論 2 0
  • 以前看過一組圖片,很感動龙宏,先轉(zhuǎn)幾張——Melting Men 我想起了雪人棵逊。 如果雪人有溫度,它將耗盡最后一份熱量...
    娃zi山閱讀 425評論 0 2