1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      類和對(duì)象怎么在python中使用-創(chuàng)新互聯(lián)

      這篇文章給大家介紹類和對(duì)象怎么在python中使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

      為張掖等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及張掖網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、張掖網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

      類的定義

      在定義類或者它的函數(shù)的時(shí)候,如果沒(méi)有參數(shù)的話,需要把參數(shù)寫(xiě)為self,這樣在外部調(diào)用的時(shí)候能清楚調(diào)用的是哪個(gè)實(shí)例的函數(shù)。這個(gè)self表示的是當(dāng)前的實(shí)例,與C++中的self和Java中的this是一樣的。

      空類

      #!/usr/bin/python
      # Filename: simplestclass.py
      class Person:
        pass # An empty block
      p = Person()
      print p

      我們使用class語(yǔ)句后跟類名,創(chuàng)建了一個(gè)新的類。這后面跟著一個(gè)縮進(jìn)的語(yǔ)句塊形成類體。在這個(gè)例子中,我們使用了一個(gè)空白塊,它由pass語(yǔ)句表示。這樣編譯的時(shí)候就會(huì)跳過(guò)。這是一個(gè)空類。

      接下來(lái),我們使用類名后跟一對(duì)圓括號(hào)來(lái)創(chuàng)建一個(gè)對(duì)象/實(shí)例。因?yàn)檫@個(gè)類不需要任何的參數(shù),所以創(chuàng)建的時(shí)候也不需要參數(shù)。

      $ python simplestclass.py
      <__main__.Person instance at 0xf6fcb18c>

      打印這個(gè)對(duì)象,我們可以看到這個(gè)對(duì)象所屬的類,以及它的內(nèi)存地址。

      __init__函數(shù)

      在上面的例子中,我們沒(méi)有寫(xiě)任何東西,但是還是會(huì)有一個(gè)默認(rèn)的構(gòu)造函數(shù)。在python中也有類似構(gòu)造函數(shù)的東西,就是__init__函數(shù)。在創(chuàng)建對(duì)象的時(shí)候會(huì)自動(dòng)調(diào)用這個(gè)函數(shù)。

      #!/usr/bin/python
      # Filename: class_init.py
      class Person:
        def __init__(self, name):
          self.name = name
        def sayHi(self):
          print 'Hello, my name is', self.name
      p = Person('Swaroop')
      p.sayHi()

      輸出:

      $ python class_init.py
      Hello, my name is Swaroop

      當(dāng)新建一個(gè)person對(duì)象時(shí),因?yàn)開(kāi)_init__中需要有name參數(shù),所以需要提供一個(gè)參數(shù)。可以看到這個(gè)類中有一個(gè)自己的域,在構(gòu)造的時(shí)候把name的值賦給對(duì)象里的name。
      可以看到,sayHi并不需要參數(shù),但是在定義函數(shù)時(shí)仍然要有參數(shù)self

      __del__函數(shù)

      就如同init方法一樣,還有一個(gè)特殊的方法del,它在對(duì)象消逝的時(shí)候被調(diào)用。相當(dāng)于析構(gòu)函數(shù)。對(duì)象消逝即對(duì)象不再被使用,它所占用的內(nèi)存將返回給系統(tǒng)作它用。但是很難保證這個(gè)方法究竟在什么時(shí)候運(yùn)行。如果你想要指明它的運(yùn)行,你就得使用del語(yǔ)句。代碼例子和下面的在一起。

      使用類的變量

      Python中所有的類成員(包括數(shù)據(jù)成員)都是公共的,所有的方法都是有效的 。

      只有一個(gè)例外:如果你使用的數(shù)據(jù)成員名稱以雙下劃線前綴比如__privatevar,Python的名稱管理體系會(huì)有效地把它作為私有變量。

      這樣就有一個(gè)慣例,如果某個(gè)變量只想在類或?qū)ο笾惺褂茫蛻?yīng)該以單下劃線前綴。而其他的名稱都將作為公共的,可以被其他類/對(duì)象使用。

      #!/usr/bin/python
      # Filename: objvar.py
      class Person:
        '''Represents a person.'''
        population = 0
        def __init__(self, name):
          '''Initializes the person's data.'''
          self.name = name
          print '(Initializing %s)' % self.name
          # When this person is created, he/she
          # adds to the population
          Person.population += 1
        def __del__(self):
          '''I am dying.'''
          print '%s says bye.' % self.name
          Person.population -= 1
          if Person.population == 0:
            print 'I am the last one.'
          else:
            print 'There are still %d people left.' % Person.population
        def sayHi(self):
          '''Greeting by the person.
          Really, that's all it does.'''
          print 'Hi, my name is %s.' % self.name
        def howMany(self):
          '''Prints the current population.'''
          if Person.population == 1:
            print 'There is nobody here.'
          else:
            print 'We have %d persons here.' % Person.population
      swaroop = Person('Swaroop')
      swaroop.sayHi()
      swaroop.howMany()
      kalam = Person('Abdul Kalam')
      kalam.sayHi()
      kalam.howMany()
      swaroop.sayHi()
      swaroop.howMany()

      輸出:

      $ python objvar.py
      (Initializing Swaroop)
      Hi, my name is Swaroop.
      I am the only person here.
      (Initializing Abdul Kalam)
      Hi, my name is Abdul Kalam.
      We have 2 persons here.
      Hi, my name is Swaroop.
      We have 2 persons here.
      Abdul Kalam says bye.
      There are still 1 people left.
      Swaroop says bye.
      There is nobody here.

      這是一個(gè)很長(zhǎng)的例子。這里,population屬于Person類,因此是一個(gè)類的變量。name變量屬于對(duì)象(它使用self賦值)因此是對(duì)象的變量。

      觀察可以發(fā)現(xiàn)init方法用一個(gè)名字來(lái)初始化Person實(shí)例。在這個(gè)方法中,我們讓population增加1,這是因?yàn)槲覀冊(cè)黾恿艘粋€(gè)人。同樣可以發(fā)現(xiàn),self.name的值根據(jù)每個(gè)對(duì)象指定,這表明了它作為對(duì)象的變量的本質(zhì)。

      記住,你只能使用self變量來(lái)引用同一個(gè)對(duì)象的變量和方法。這被稱為 屬性引用。

      當(dāng)一個(gè)對(duì)象被清除的時(shí)候,del被調(diào)用,人數(shù)減少1并輸出誰(shuí)走了。一開(kāi)始Abdul Kalam被自動(dòng)清除了,后來(lái)Swaroop也被自動(dòng)清除了。清除的順序應(yīng)該跟對(duì)象閑置的時(shí)間有關(guān),當(dāng)閑置時(shí)間達(dá)到某個(gè)值就清除掉。

      繼承

      python的繼承和C++還有JAVA沒(méi)有什么不同,就是構(gòu)造函數(shù)和其他函數(shù)里記得要在參數(shù)里加上self。函數(shù)的重載也是和C++,JAVA一樣的。

      例子:

      #!/usr/bin/python
      # Filename: inherit.py
      class SchoolMember:
        '''Represents any school member.'''
        def __init__(self, name, age):
          self.name = name
          self.age = age
          print '(Initialized SchoolMember: %s)' % self.name
        def tell(self):
          '''Tell my details.'''
          print 'Name:"%s" Age:"%s"' % (self.name, self.age),
      class Teacher(SchoolMember):
        '''Represents a teacher.'''
        def __init__(self, name, age, salary):
          SchoolMember.__init__(self, name, age)
          self.salary = salary
          print '(Initialized Teacher: %s)' % self.name
        def tell(self):
          SchoolMember.tell(self)
          print 'Salary: "%d"' % self.salary
      class Student(SchoolMember):
        '''Represents a student.'''
        def __init__(self, name, age, marks):
          SchoolMember.__init__(self, name, age)
          self.marks = marks
          print '(Initialized Student: %s)' % self.name
        def tell(self):
          SchoolMember.tell(self)
          print 'Marks: "%d"' % self.marks
      t = Teacher('Mrs. Shrividya', 40, 30000)
      s = Student('Swaroop', 22, 75)
      print # prints a blank line
      members = [t, s]
      for member in members:
        member.tell() # works for both Teachers and Students

      輸出:

      $ python inherit.py
      (Initialized SchoolMember: Mrs. Shrividya)
      (Initialized Teacher: Mrs. Shrividya)
      (Initialized SchoolMember: Swaroop)
      (Initialized Student: Swaroop)

      Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
      Name:"Swaroop" Age:"22" Marks: "75"

      schoolmenber是父類,學(xué)生和老師是子類,繼承的方法為在類定義中把參數(shù)設(shè)為schoolmenber。可以看到,當(dāng)我們繼承一個(gè)類的時(shí)候,首先調(diào)用的是父類的構(gòu)造函數(shù),然后才是子類的。

      關(guān)于類和對(duì)象怎么在python中使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.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)題:類和對(duì)象怎么在python中使用-創(chuàng)新互聯(lián)
      標(biāo)題來(lái)源:http://ef60e0e.cn/article/ppdis.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        德阳市| 仁化县| 邢台县| 阳东县| 北票市| 海林市| 安泽县| 衡东县| 东乡族自治县| 苗栗县| 逊克县| 滁州市| 长岛县| 佛冈县| 淮阳县| 吴桥县| 临海市| 屏山县| 崇礼县| 泗阳县| 昌邑市| 铅山县| 修水县| 商河县| 瓮安县| 什邡市| 永登县| 华坪县| 武清区| 祥云县| 泰来县| 岑巩县| 陕西省| 永吉县| 台前县| 永清县| 临夏市| 扶沟县| 全南县| 来安县| 城口县|