真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python自動(dòng)化運(yùn)維開發(fā)----基礎(chǔ)(十五)Python面向?qū)ο?創(chuàng)新互聯(lián)

1.面向過(guò)程和面向?qū)ο蟮膮^(qū)別

甘德網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),甘德網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為甘德近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的甘德做網(wǎng)站的公司定做!

面向過(guò)程 : 需要用什么代碼去解決什么問(wèn)題

面向?qū)ο?: 我有什么可以給你什么

2.面向?qū)ο蟮奶卣?/p>

(1)封裝

數(shù)據(jù)不想讓別人接觸到的

函數(shù)(過(guò)程) =》 方法(在面向?qū)ο笾校禾峁┖瘮?shù)、方法對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)和操作

(2)繼承

有一塊代碼塊 A(函數(shù))

B 也想有一個(gè)代碼塊(函數(shù))

(3)多態(tài)

一個(gè)對(duì)象可以體現(xiàn)不同的特征

3. 實(shí)驗(yàn)

創(chuàng)建一個(gè)類

>>> class Person(object): ...     pass ...

創(chuàng)建一個(gè)實(shí)例對(duì)象

>>> kk = Person()  >>> type(kk)

創(chuàng)建實(shí)例對(duì)象的屬性

>>> kk.name = 'kk' >>> dir(kk) ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__',\  '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__'\  , 'name']

定義類的屬性

>>> class person(object): ...     name = 'kk' ...  >>> kk = person() >>> kk.name 'kk'

類、實(shí)例對(duì)象查找屬性也是有順序的:先在實(shí)例對(duì)象中找,如果實(shí)例對(duì)象中沒,接著去類中屬性找,如果類中屬性沒的話就報(bào)錯(cuò)了

小案例: 更好的區(qū)分類的屬性和實(shí)例對(duì)象的屬性

創(chuàng)建一個(gè)類

>>> class Person(object): ...     name = 'kk' ...

創(chuàng)建實(shí)例對(duì)象name1 并給實(shí)例對(duì)象添加 addr 屬性

>>> name1 = Person() >>> name1.addr = '西安市'

創(chuàng)建實(shí)例對(duì)象name2 并給實(shí)例對(duì)象添加 age 屬性

>>> name2 = Person() >>> name2.age = 25

測(cè)試訪問(wèn)name1 的age 屬性 是報(bào)錯(cuò)的 因?yàn)?實(shí)例對(duì)象name1和類中都沒有age屬性

>>> name1.age Traceback (most recent call last):   File "", line 1, in  AttributeError: 'Person' object has no attribute 'age'

分別打印類、實(shí)例對(duì)象name1、實(shí)例對(duì)象name2的name屬性

>>> print(person.name,name1.name,name2.name) kk kk kk

給實(shí)例對(duì)象name1重新設(shè)置一下name 屬性,在依次打印name屬性

>>> print(person.name,name1.name,name2.name) kk kk1 kk

案例總結(jié):

(1)類的屬性和實(shí)例的屬性可以動(dòng)態(tài)賦值

(2)在訪問(wèn)實(shí)例對(duì)象的屬性時(shí),優(yōu)先訪問(wèn)實(shí)例對(duì)象的屬性;當(dāng)實(shí)例對(duì)象的屬性不存在的時(shí)候,去訪問(wèn)類的屬性,類的屬性不存在就報(bào)錯(cuò)

(3)實(shí)例對(duì)象設(shè)置和修改屬性的時(shí)候,不會(huì)影響類的屬性

4.類

初始化函數(shù)(構(gòu)造函數(shù))

以下類中的初始化函數(shù)

>>> class person(object): ...     def __init__(self): ...         self.name = 'kk' ...         self.age = 24 ...

創(chuàng)建一個(gè)實(shí)例對(duì)象

>>> name1 = person() >>> name1.name 'kk' >>> name1.age 24

重新創(chuàng)建一個(gè)類

>>> class person(object):    ...     name = 'Dog' ...     def __init__(self): ...         self.name = 'dog' ...

分別打印類和實(shí)例對(duì)象的name屬性

>>> name1 = person() >>> print(name1.name, person.name) dog Dog

類的方法,如下創(chuàng)建類的方法

>>> class Test(object): ...     Name = 'Test' ...     @classmethod ...     def class_method(cls): ...         print(cls.Name) ...

訪問(wèn)類的方法

>>> Test.class_method() Test

創(chuàng)建實(shí)例對(duì)象test ,實(shí)例對(duì)象訪問(wèn)類的方法

>>> test = Test() >>> test.class_method() Test

實(shí)例的方法

>>> class Test(object): ...     Name = 'Test' ...     def __init__(self): ...         self.name = 'test' ...     def instance_method(self): ...         print(self.name) ...         print(self.Name) ..

訪問(wèn)實(shí)例的方法

>>> t = Test() >>> t.instance_method() test Test

靜態(tài)方法 (@staticmethod)

>>> class Test(object): ...     @staticmethod ...     def static_method(): ...         print('static_method') ...  >>> Test.static_method() static_method

小案例

貓狗大戰(zhàn),貓的初始生命值是120 , 狗的初始生命值是100,random隨機(jī)掉血,采用繼承的方式

#!/usr/bin/python import random class Animals(object):     def __init__(self,name,blood=100):         self.name = name         self.blood = blood     def get_name(self):         return self.name     def get_blood(self):         return self.blood     def drop_blood(self,blood):         self.blood -= blood     def attack(self,rival):         drop = random.randint(0,20)         rival.drop_blood(drop)         print(self.name,'讓',rival.name,'掉血',drop,'對(duì)手剩余:',rival.get_blood(),'血') class Dog(Animals):     pass class Cat(Animals):     pass if __name__ == '__main__':     dog = Dog('wangwang')     cat = Cat('miaomiao',120)     while True:         dog.attack(cat)         if cat.get_blood() < 0:             print('勝利方是:',dog.get_name())             break         cat.attack(dog)         if dog.get_blood() < 0:             print('勝利方是:',cat.get_name())             break

執(zhí)行結(jié)果:

Python自動(dòng)化運(yùn)維開發(fā)----基礎(chǔ)(十五)Python面向?qū)ο?></p><p>重寫父類的***方法,讓狗***貓時(shí)掉血范圍在10-30</p>class Dog(Animals):
    def attack(self,rival):
        drop = random.randint(10,30)
        rival.drop_blood(drop)
        print(self.name,'讓',rival.name,'掉血',drop,'對(duì)手剩余:',rival.get_blood(),'血')</pre><p><img src=", line 1, in  AttributeError: 'Person' object has no attribute 'name'

私有屬性的訪問(wèn)

>>> kk._Person__age 30

@property 和 @方法名.setter的使用

@property 把一個(gè)方法變成屬性去調(diào)用 

@方法名.setter是把一個(gè)方法變成屬性賦值

>>> class Person(object): ...     def __init__(self,name,age): ...         self._name = name ...         self._age = age ...     @property ...     def name(self): ...         return self._name ...     @name.setter ...     def name(self,value): ...         self._name = value ...

訪問(wèn)測(cè)試

>>> kk = Person('kk',20) >>> kk.name 'kk' >>> kk.name = 'kk1' >>> kk.name 'kk1'

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前標(biāo)題:Python自動(dòng)化運(yùn)維開發(fā)----基礎(chǔ)(十五)Python面向?qū)ο?創(chuàng)新互聯(lián)
鏈接URL:http://weahome.cn/article/dscgih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部