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

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

Python面向?qū)ο缶幊蹋ㄒ唬?/h1>

一.什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)為什么要有它

成都創(chuàng)新互聯(lián)云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)13年的服務(wù)器租用、達(dá)州服務(wù)器托管、云服務(wù)器、網(wǎng)站空間、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、網(wǎng)站空間、域名申請(qǐng)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。

1.面向過(guò)程的程序設(shè)計(jì):核心是過(guò)程二字,過(guò)程指的是解決問(wèn)題的步驟,即先干什么再干什么......面向過(guò)程的編程就好比設(shè)計(jì)一條流水線,是一種機(jī)械式的思維方式。

優(yōu)點(diǎn)是:復(fù)雜的問(wèn)題流程化,進(jìn)而簡(jiǎn)單化

缺點(diǎn)是:一套流水線或者流程就是用來(lái)解決一個(gè)問(wèn)題,生產(chǎn)汽水的流水線無(wú)法生產(chǎn)汽車,即便是能,也得是大改,改一個(gè)組件,牽一發(fā)而動(dòng)全身。

應(yīng)用場(chǎng)景:一旦完成基本很少改變的場(chǎng)景,著名的例子有Linux內(nèi)核,git,以及Apache HTTP Server等

2.面向?qū)ο蟮某绦蛟O(shè)計(jì):核心是對(duì)象二字,對(duì)象是特征與技能的結(jié)合體,基于面向?qū)ο笤O(shè)計(jì)程序就好比在創(chuàng)造一個(gè)世界,你就是這個(gè)世界的上帝,存在的皆為對(duì)象,不存在的也可以創(chuàng)造出來(lái),與面向過(guò)程的思維方式形成鮮明的對(duì)比,面向?qū)ο蟾又匾晫?duì)現(xiàn)實(shí)世界的模擬,是一種“上帝式”的思維方式

優(yōu)點(diǎn)是:解決了程序的擴(kuò)展性。對(duì)某一個(gè)對(duì)象單獨(dú)修改,會(huì)立刻反應(yīng)在整個(gè)體系中。

缺點(diǎn)是:編程復(fù)雜度遠(yuǎn)高于面向過(guò)程

應(yīng)用場(chǎng)景:需求經(jīng)常變化的軟件,一般需求的變化都集中在用戶層,互聯(lián)網(wǎng)應(yīng)用,企業(yè)內(nèi)部軟件,游戲等都是面向?qū)ο蟮某绦蛟O(shè)計(jì)大顯身手的好地方

二.類與對(duì)象

     類:對(duì)象是特征與技能的結(jié)合體,而類則是一系列對(duì)象相同的特征與技能的結(jié)合體

     強(qiáng)調(diào):       

        1.對(duì)象是具體存在的事物,而類則一個(gè)抽象的概念

        2.站在不同的角度總結(jié)出的類與對(duì)象是不同的

        在現(xiàn)實(shí)世界中:先有一個(gè)個(gè)具體存在的對(duì)象,然后隨著人類文明的發(fā)展才總結(jié)出類的概念

        在程序中: 先定義類,后調(diào)用類來(lái)產(chǎn)生對(duì)象

1.先定義類
  class OldboyStudent:
    #相同的特征
    school = 'oldboy'

    #相同的技能
    def choose_course(self):
        print('choosing course')
#類是一系列對(duì)象相同的特征(變量)與技能(函數(shù))的結(jié)合體,即類體中最常見(jiàn)的就是變量與函數(shù)的定義
# 但其實(shí)類體中是可以存在任意python代碼的
# 類體代碼會(huì)在類定義階段立即執(zhí)行,會(huì)產(chǎn)生一個(gè)類名稱空間,用來(lái)將類體代碼執(zhí)行過(guò)程中產(chǎn)生的名字都丟進(jìn)去,查看方式如下
# print(OldboyStudent.__dict__) # 查看類的名稱空間
# print(OldboyStudent.school) #print(OldboyStudent.__dict__['school'])
# print(OldboyStudent.choose_course)
# OldboyStudent.school='OLDBOY' #OldboyStudent.__dict__['school']='OLDBOY'
# OldboyStudent.country='China' #OldboyStudent.__dict__['country']='China'
# del OldboyStudent.country # del OldboyStudent.__dict__['country']
# print(OldboyStudent.__dict__) 
# 總結(jié):
#1. 類本質(zhì)就是一個(gè)名稱空間,或者說(shuō)是一個(gè)用來(lái)存放變量與函數(shù)的容器
#2. 類的用途之一就是當(dāng)做名稱空間從其內(nèi)部取出名字來(lái)使用
#3. 類的用途之二是調(diào)用類來(lái)產(chǎn)生對(duì)象 


2.后調(diào)用類來(lái)產(chǎn)生對(duì)象
# s1=OldboyStudent()
# s2=OldboyStudent()
# s3=OldboyStudent()
#如此,s1、s2、s3都一樣了,而這三者除了相似的屬性之外還各種不同的屬性,這就用到了__init__
#注意:該方法是在對(duì)象產(chǎn)生之后才會(huì)執(zhí)行,只用來(lái)為對(duì)象進(jìn)行初始化操作,可以有任意代碼,但一定不能有返回值
class OldboyStudent:
    ......    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    ......


s1=OldboyStudent('李坦克','男',18) #先調(diào)用類產(chǎn)生空對(duì)象s1,然后調(diào)用OldboyStudent.__init__(s1,'李坦克','男',18)s2=OldboyStudent('王大炮','女',38)
s3=OldboyStudent('牛榴彈','男',78)#程序中對(duì)象的用法#執(zhí)行__init__,s1.name='牛榴彈',很明顯也會(huì)產(chǎn)生對(duì)象的名稱空間s2.__dict__{'name': '王大炮', 'age': '女', 'sex': 38}

s2.name #s2.__dict__['name']s2.name='王三炮' #s2.__dict__['name']='王三炮's2.course='python' #s2.__dict__['course']='python'del s2.course #s2.__dict__.pop('course')

 ?。?!細(xì)說(shuō)_init__方法?。?!

#  方式一:為對(duì)象初始化自己獨(dú)有的特征
class People:
    country='China'
    x=1
    def run(self):
        print('----->', self) 
# 實(shí)例化出三個(gè)空對(duì)象
obj1=People()
obj2=People()
obj3=People() 
 
# 為對(duì)象定制自己獨(dú)有的特征
obj1.name='egon'
obj1.age=18
obj1.sex='male'

obj2.name='lxx'
obj2.age=38
obj2.sex='female'

obj3.name='alex'
obj3.age=38
obj3.sex='female'

# print(obj1.__dict__)
# print(obj2.__dict__)
# print(obj3.__dict__)
# print(People.__dict__)

# 方式二、為對(duì)象初始化自己獨(dú)有的特征
class People:
    country='China'
    x=1

    def __init__(obj, x, y, z): #obj=obj1,x='egon',y=18,z='male'
        obj.name = x
        obj.age = y
        obj.sex = z

    def run(self):
        print('----->', self)

obj1=People('egon',18,'male') #People.__init__(obj1,'egon',18,'male')
obj2=People('lxx',38,'female') #People.__init__(obj2,'lxx',38,'female')
obj3=People('alex',38,'female') #People.__init__(obj3,'alex',38,'female')

# __init__方法
# 強(qiáng)調(diào):
#   1、該方法內(nèi)可以有任意的python代碼
#   2、一定不能有返回值
class People:
    country='China'
    x=1
    def __init__(obj, name, age, sex): #obj=obj1,x='egon',y=18,z='male'
        # if type(name) is not str:
        #     raise TypeError('名字必須是字符串類型')
        obj.name = name
        obj.age = age
        obj.sex = sex


    def run(self):
        print('----->', self)


# obj1=People('egon',18,'male')
# obj1=People(3537,18,'male')

# print(obj1.run)
# obj1.run() #People.run(obj1)
# print(People.run)

?。?!__init__方法之為對(duì)象定制自己獨(dú)有的特征

三.屬性查找

類有兩種屬性:數(shù)據(jù)屬性和函數(shù)屬性

1.類的數(shù)據(jù)屬性是所有對(duì)象共享的

2.類的函數(shù)屬性是綁定給對(duì)象用的

#類的數(shù)據(jù)屬性是所有對(duì)象共享的,id都一樣
print(id(OldboyStudent.school))
print(id(s1.school))
print(id(s2.school))
print(id(s3.school))

**************
4377347328
4377347328
4377347328
4377347328
**************

#類的函數(shù)屬性是綁定給對(duì)象使用的,obj.method稱為綁定方法,內(nèi)存地址都不一樣
#ps:id是python的實(shí)現(xiàn)機(jī)制,并不能真實(shí)反映內(nèi)存地址,如果有內(nèi)存地址,還是以內(nèi)存地址為準(zhǔn)

print(OldboyStudent.learn)
print(s1.learn)
print(s2.learn)
print(s3.learn)

*******************

>
>
>
*******************

Python面向?qū)ο缶幊蹋ㄒ唬?></p><p>在obj.name會(huì)先從obj自己的名稱空間里找name,找不到則去類中找,類也找不到就找父類...最后都找不到就拋出異常 </p><p> </p><p>四.綁定到對(duì)象的方法的特殊之處</p><pre>#改寫
class OldboyStudent:
    school='oldboy'
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex    
    def learn(self):        
        print('%s is learning' %self.name) #新增self.name    
    def eat(self):        
        print('%s is eating' %self.name)    
    def sleep(self):        
        print('%s is sleeping' %self.name)

s1=OldboyStudent('李坦克','男',18)
s2=OldboyStudent('王大炮','女',38)
s3=OldboyStudent('牛榴彈','男',78)</pre><p>類中定義的函數(shù)(沒(méi)有被任何裝飾器裝飾的)是類的函數(shù)屬性,類可以使用,但必須遵循函數(shù)的參數(shù)規(guī)則,有幾個(gè)參數(shù)需要傳幾個(gè)參數(shù)<br/></p><pre>OldboyStudent.learn(s1) #李坦克 is learning
OldboyStudent.learn(s2) #王大炮 is learning
OldboyStudent.learn(s3) #牛榴彈 is learning</pre><p>類中定義的函數(shù)(沒(méi)有被任何裝飾器裝飾的),其實(shí)主要是給對(duì)象使用的,而且是綁定到對(duì)象的,雖然所有對(duì)象指向的都是相同的功能,但是綁定到不同的對(duì)象就是不同的綁定方法</p><p>強(qiáng)調(diào):綁定到對(duì)象的方法的特殊之處在于,綁定給誰(shuí)就由誰(shuí)來(lái)調(diào)用,誰(shuí)來(lái)調(diào)用,就會(huì)將‘誰(shuí)’本身當(dāng)做第一個(gè)參數(shù)傳給方法,即自動(dòng)傳值(方法__init__也是一樣的道理)</p><p><br/></p><p><br/></p>            
            
                        <br>
            文章標(biāo)題:Python面向?qū)ο缶幊蹋ㄒ唬?           <br>
            鏈接URL:<a href=http://weahome.cn/article/ispsid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部