python面向?qū)ο?

一贼陶、類和對象

1.什么是類,什么是對象

類就是擁有相同功能和相同屬性的對象的集合(重要) - 抽象的

對象就是類的實例 - 具體的

如果車是類孩灯,具體的某一輛車才是對象

2.類的聲明 —— 用代碼描述清楚這個類是哪些相同的功能和相同屬性的集合

"""
1)語法:
class 類名:
    類的說明文檔
    類的內(nèi)容
   
2)說明
class  -  聲明類的關(guān)鍵字闺金,固定寫法
類名    -  程序員自己命名
          要求: 標(biāo)識符,不能是關(guān)鍵字
          規(guī)范: 見名知義峰档;采用駝峰式命名败匹;首字母大寫
類的說明文檔  -  用""""""引起來的說明性文字
類的內(nèi)容  -   用來描述共同的功能和屬性
             主要包含方法(聲明在類中函數(shù))和屬性(聲明在類中的變量)
"""
# student_name  -> PEP8     studentName  ->  駝峰式命名


class Person:
    """人類"""
    def eat(self):
        print('人類吃飯')

    def sleep(self):
        print('人類睡覺')

    def thinking(self):
        print('思考')

    def opertion(self, char):
        print()

3.創(chuàng)建對象

語法:

類() —— 創(chuàng)建類的對象并且返回

p1 = Person()
# 同一個類的對象可以有對象
p2 = Person()
p3 = p2

print(id(p1), id(p2))

二、對象方法

1.類中的方法 —— 指就是類中共同的功能

方法 —— 聲明在類中的函數(shù)

類中的方法分為三種: 對象方法讥巡、類方法掀亩、靜態(tài)方法

2.對象方法

1)怎么聲明: 直接聲明在類中的函數(shù)就是對象方法

2)怎么調(diào)用: 需要對象來調(diào)用; 以'對象.對象方法()'的形式來調(diào)用

3)特點: 自帶參數(shù)self, 參數(shù)self在通過對象調(diào)用的時候不用傳參; 系統(tǒng)會自動將當(dāng)前對象傳給self傳參;

當(dāng)前對象 - 當(dāng)前調(diào)用這個方法的對象

當(dāng)前類的對象能做的事情欢顷,self都可以做

class Dog:
    # eat就是對象方法
    def eat(self, food='骨頭'):
        # self=dog2; food='肉'
        print('self:', self)
        print('狗吃'+food)

        # 對象能做的事情self都能做
        self.run()

    def run(self):
        # self=dog2
        print('狗跑步')


dog1 = Dog()   # dog1就是Dog的對象
print('dog1:', dog1)
# dog1.eat()

dog2 = Dog()
print('dog2:', dog2)
dog2.eat('肉')

三槽棍、_ _ init _ _ 方法和構(gòu)造方法

"""
1)構(gòu)造函數(shù) - python中聲明類的時候,系統(tǒng)會自動聲明一個和類同名的函數(shù)(這個函數(shù)就是構(gòu)造函數(shù))抬驴;用來創(chuàng)建當(dāng)前類的對象炼七。
            當(dāng)我們調(diào)用構(gòu)造函數(shù)創(chuàng)建對象的時候,系統(tǒng)會自動調(diào)用類中的__init__方法來初始化對象
2) init方法 - __init__是魔法方法怎爵;也是一個對象方法特石。聲明的時候函數(shù)名必須是__init__,并且保證這個方法是對象方法;
             聲明后不用去調(diào)用,系統(tǒng)會自動調(diào)用
             
             
記住: a.創(chuàng)建對象的時候系統(tǒng)自動調(diào)用__init__方法
     b.創(chuàng)建對象的時候鳖链,構(gòu)造函數(shù)需不需要參數(shù),需要幾個參數(shù)看__init__除了self以外有沒參數(shù)墩莫,有幾個參數(shù)
"""



class Person:
    def __init__(self):
        print('init方法')


p1 = Person()
p2 = Person()


class Student:
    def __init__(self, name, age=10):
        print('學(xué)生類的init', name, age)


# stu1 = Student()   # TypeError: __init__() missing 2 required positional arguments: 'name' and 'age'

stu2 = Student('小明', 18)
stu3 = Student(age=20, name='小花')
stu4 = Student('Tom')

四芙委、類中的屬性

1.類中的屬性 —— 就是類中保存數(shù)據(jù)的變量

類中的屬性分為2種:字段、對象屬性

2.字段

1)怎么聲明: 直接聲明在類里面函數(shù)外面的變量就是字段

2)怎么使用: 通過類使用狂秦; 以'類.字段'的形式去使用

3)什么時候用:不會因為對象不同而不一樣的屬性就聲明成對象屬性

3.對象屬性

1)怎么聲明:聲明在init方法中灌侣;以'self.屬性名=值'的形式來聲明

2)怎么使用: 通過對象來使用; 以'對象.屬性'的形式來使用

3)什么時候用: 會因為對象不同而不一樣的屬性就聲明成對象屬性

class Person:
    # a就是字段
    a = 10

    # name和age就是對象屬性
    def __init__(self):
        self.name = '小明'
        self.age = 18


# print(a)    # NameError: name 'a' is not defined
print(Person.a)

p1 = Person()
print(p1.name, p1.age)

p2 = Person()
print(p2.name, p2.age)
p2.name = '小花'


class Student:
    def __init__(self, n, s=0):
        self.name = n
        self.age = 18
        self.score = s


stu1 = Student('小明')
print(stu1.name, stu1.age, stu1.score)

stu2 = Student('小花', 60)
print(stu2.name, stu2.age, stu2.score)


# 聲明一個狗類裂问,擁有屬性:品種侧啼、名字牛柒、顏色、年齡痊乾、性別皮壁; 功能: 吃(xxx吃xxx)
class Dog:
    def __init__(self, name, bread='土狗', color='黃色', age=1, gender='公狗'):
        self.breed = bread
        self.name = name
        self.color = color
        self.age = age
        self.gender = gender

    def eat(self, food: str):
        # self=dog1; food='肉'
        print('%s在吃%s' % (self.name, food))   # self.name->dog1.name


dog1 = Dog('大黃')
dog2 = Dog('財財', color='黑色')

dog1.eat('肉')
dog2.eat('骨頭')

五、類中的方法

1.類中的方法

類中的方法有3種: 對象方法哪审、類方法蛾魄、靜態(tài)方法

1)對象方法

a.怎么聲明:直接聲明在類中的函數(shù)
b.怎么調(diào)用:通過對象來調(diào)用
c.特點:自帶一個參數(shù)self;self在調(diào)用的時候不用傳參湿滓,指向當(dāng)前對象 self -> 當(dāng)前對象
d.什么時候用:如果實現(xiàn)函數(shù)的功能需要用到對象屬性滴须,這個函數(shù)就聲明成對象方法

2)類方法

a.怎么聲明:在函數(shù)聲明前加@classmethod
b.怎么調(diào)用:通過類來調(diào)用
c.特點:自帶一個參數(shù)cls; cls在調(diào)用的時候不用傳參,系統(tǒng)會自動將當(dāng)前類傳給cls
cls -> 當(dāng)前類 (當(dāng)前類能做的事情cls都可以做)
d.什么時候用:實現(xiàn)函數(shù)的功能不需要對象屬性的前提下叽奥,需要類

3)靜態(tài)方法

a.怎么聲明:在函數(shù)聲明前加@staticmethod
b.怎么調(diào)用:通過類來調(diào)用
c.特點:沒有自帶的參數(shù)
d.什么時候用:實現(xiàn)函數(shù)的功能不需要對象屬性的前提下扔水,也不需要類
class Student:
    num = 100

    def __init__(self, name, tel, age=18):
        self.name = name
        self.age = age
        self.tel = tel

    # study是對象方法
    def study(self):
        print('%s在學(xué)習(xí)' % self.name)

    @classmethod
    def func1(cls):
        print('cls:', cls)
        print('類方法func1')
        # print(num)    # NameError: name 'num' is not defined
        print(Student.num)

        # cls可以創(chuàng)建對象
        stu2 = cls('小花', '112', 20)
        print('stu2:', stu2)
        # cls可以使用類的字段
        print(cls.num)

    @staticmethod
    def func2():
        print('靜態(tài)方法func2')


stu = Student('小明', '110')
stu.study()
print('stu:', stu)

print('Student:', Student)
Student.func1()

Student.func2()


class Math:
    pi = 3.1415926

    @classmethod
    def circle_area(cls, r):
        return cls.pi * r * r

    @staticmethod
    def sum(num1, num2):
        return num2 + num1

六、對象屬性的增刪改查

1.獲取屬性值

1)對象.屬性 - 獲取對象指定屬性的值

2)getattr(對象, 屬性名:str) - 獲取對象指定屬性的值

3)getattr(對象, 屬性名:str, 默認(rèn)值) - 獲取對象指定屬性的值朝氓,沒有不會報錯魔市,會獲取默認(rèn)值

2.修改屬性和增加屬性

1)對象.屬性 = 值 當(dāng)屬性存在的時候就是修改;屬性不存在的時候是增加

2)setattr(對象, 屬性名, 值) 當(dāng)屬性存在的時候就是修改膀篮;屬性不存在的時候是增加

3.刪除對象屬性

1) del 對象.屬性 - 刪除對象中指定的屬性

2) delattr(對象, 屬性名) - 刪除對象中指定的屬性

注意: 屬性的增刪改查只針對指定對象有效嘹狞,不會影響別的對象

七、內(nèi)置屬性

1. 類._ _ name _ _ - 獲取類的名字

2. 對象._ _ class _ _ - 獲取對象對應(yīng)的類(和type(對象)功能一樣)

3. 類._ _ doc _ _ - 獲取類的說明文檔

4.類._ _ dict _ _ - 獲取類中所有的字段和字段對應(yīng)的值誓竿,以字典的形式返回

5. (掌握磅网!) 對象._ _ dict _ _ - 獲取對象所有的屬性和對應(yīng)的值,以字典的形式返回

注意: 如果設(shè)置了_ _ slots _ _,對象的 _ _ dict _ _就不能用

6.類._ _ module _ _ - 獲取當(dāng)前這個類是哪個模塊中聲明的筷屡,返回的是模塊名

7.類._ _ bases _ _ - 獲取當(dāng)前類的所有的父類

object是python的基類

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涧偷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子毙死,更是在濱河造成了極大的恐慌燎潮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扼倘,死亡現(xiàn)場離奇詭異确封,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)再菊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門爪喘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纠拔,你說我怎么就攤上這事秉剑。” “怎么了稠诲?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵侦鹏,是天一觀的道長诡曙。 經(jīng)常有香客問我,道長略水,這世上最難降的妖魔是什么价卤? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮聚请,結(jié)果婚禮上荠雕,老公的妹妹穿的比我還像新娘。我一直安慰自己驶赏,他們只是感情好炸卑,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著煤傍,像睡著了一般盖文。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚯姆,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天五续,我揣著相機(jī)與錄音,去河邊找鬼龄恋。 笑死疙驾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郭毕。 我是一名探鬼主播它碎,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼显押!你這毒婦竟也來了扳肛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乘碑,失蹤者是張志新(化名)和其女友劉穎挖息,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兽肤,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡套腹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了资铡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沉迹。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖害驹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛤育,我是刑警寧澤宛官,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布葫松,位于F島的核電站,受9級特大地震影響底洗,放射性物質(zhì)發(fā)生泄漏腋么。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一亥揖、第九天 我趴在偏房一處隱蔽的房頂上張望珊擂。 院中可真熱鬧,春花似錦费变、人聲如沸摧扇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扛稽。三九已至,卻和暖如春滑负,著一層夾襖步出監(jiān)牢的瞬間在张,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工矮慕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留帮匾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓痴鳄,卻偏偏與公主長得像瘟斜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子夏跷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

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

  • 編程思想:面向過程編程(窮人思想)哼转、函數(shù)式編程、面向?qū)ο缶幊?富豪) ?????面向過程編程 - 算法和邏輯...
    _小孩子閱讀 101評論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,101評論 1 32
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔槽华,今天18年5月份再次想寫文章壹蔓,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,756評論 2 9
  • 現(xiàn)在的男人啊、都希望女人說話溫柔點兒猫态,對你體貼點兒佣蓉,長得還要漂亮點兒,身材好一點兒亲雪,經(jīng)濟(jì)獨立點兒勇凭,持家又得賢惠點兒...
    Ann萱閱讀 169評論 0 0
  • 葡萄酒是需要耐心毅力技術(shù)和金錢的傀蚌。真正做起來至少需要五年時間。這還不是做大做強(qiáng)蘸吓。寧夏賀蘭山善炫,寄托了我們很多情感,因...
    紅酒十六年閱讀 155評論 0 1