溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中面向?qū)ο蚪榻B及類的屬性和方法

發(fā)布時(shí)間:2020-08-24 04:38:01 來(lái)源:網(wǎng)絡(luò) 閱讀:557 作者:楓葉云 欄目:編程語(yǔ)言

1.面向?qū)ο蠼榻B

類和對(duì)象:是面向?qū)ο笾袃蓚€(gè)重要概念

    類:是對(duì)象對(duì)事物的抽象,比如人類\球類

    對(duì)象:是類的一個(gè)實(shí)例,比如足球\籃球

實(shí)例說(shuō)明:

    球類可以對(duì)球的特征和行為進(jìn)行抽象,然后可以實(shí)例化一個(gè)真實(shí)的球體出來(lái)

為什么面向?qū)ο螅?/p>

面向?qū)ο蟮闹饕枷胧?/code>
  • 封裝

  • 繼承

  • 多態(tài)

    這種思想方面解決較為復(fù)雜的項(xiàng)目,而且維護(hù)起來(lái)較為容易

Python類定義
類定義:

    類把需要的變量和函數(shù)組合成一起,這種包含稱為"封裝",

    class A(object):

類的結(jié)構(gòu):

    class 類名

        成員變量-屬性

        成員函數(shù)-方法

類的創(chuàng)建

class MyClass(object):

    def fun(self):

        print ("i am function")

類的方法中至少有一個(gè)參數(shù)self

類腳本舉例:


    class People(object):

        color = 'yellow'

        def think(self):

            self.color = "black"

            print "I am a %s "  % self.color

            print ("I am a thinker")

    ren = People()

    print ren.color

    ren.think()

2.類的屬性

成員變量
對(duì)象的創(chuàng)建
創(chuàng)建對(duì)象的過(guò)程稱之為實(shí)例化,當(dāng)一個(gè)對(duì)象被創(chuàng)建后,包含三個(gè)方面的特性對(duì)象聚丙屬性和方法,
句柄用于區(qū)分不同的對(duì)象,
對(duì)象的屬性和方法,與類中的成員變量和成員函數(shù)對(duì)應(yīng),
obj = MyClass()創(chuàng)建類的一個(gè)實(shí)例,擴(kuò)號(hào)對(duì)象,通過(guò)對(duì)象來(lái)調(diào)用方法和屬性
類的屬性
類的屬性按使用范圍分為公有屬性和私有屬性類的屬性范圍,取決于屬性的名稱,
共有屬性---在內(nèi)中和內(nèi)外都能夠調(diào)用的屬性
私有屬性---不能在內(nèi)外貝類以外函數(shù)調(diào)用
定義方式:以""雙下劃線開(kāi)始的成員變量就是私有屬性
可以通過(guò)instance.
classnameattribute方式訪問(wèn),
內(nèi)置屬性--由系統(tǒng)在定義類的時(shí)候默認(rèn)添加的由前后雙下劃線構(gòu)成,如
dic,module__

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = 'yellow'
     __age = 30   #私有屬性

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

ren = People()
ren.color = '白色人'
print ren.color
ren.think()
print '#'*30
print("People.color")
print ren.__People__age  ##測(cè)試時(shí)使用。如要調(diào)用 時(shí),通過(guò)方法內(nèi)調(diào)用 。

3.類的方法

成員函數(shù)

類的方法
    方法的定義和函數(shù)一樣,但是需要self作為第一個(gè)參數(shù).

類方法為:

  • 公有方法
  • 私有方法
  • 類方法
  • 靜態(tài)方法

公有方法:在類中和類外都都測(cè)調(diào)用的方法.
私有方法:不測(cè)被類的外部調(diào)用模塊,在方法前加個(gè)“__”c雙下劃線就是私有方法。

self參數(shù):
用于區(qū)分函數(shù)和類的方法(必須有一個(gè)self)
self參數(shù)表示執(zhí)行對(duì)象本身
#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = 'yellow'
     __age = 30   #私有屬性

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

   def test(self):

self.think() # 內(nèi)部調(diào)用
jack = People()
jack.test()    #外部調(diào)用
#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = 'yellow'
     __age = 30   #私有屬性

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

def  __talk(self):
print "I am talking with Tom"

 def test(self):
self.__talk() # 內(nèi)部調(diào)用talk()

jack = People()
jack.test()    #外部調(diào)用
類方法

類方法:被classmethod()函數(shù)處理過(guò)的函數(shù),能被類所調(diào)用,也能被對(duì)象所調(diào)用(是繼承的關(guān)系)。

靜態(tài)方法:相當(dāng)于“全局函數(shù)”,可以被類直接調(diào)用,可以被所有實(shí)例化對(duì)象共享,通過(guò)staticmethod()定義靜態(tài)方法, 靜態(tài)方法沒(méi)有self參數(shù)

裝飾器:

@classmethod()
@staticmethod()
#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = 'yellow'
     __age = 30   #私有屬性

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

def  __talk(self):
print "I am talking with Tom"

 def test(self):
print 'Testing....'

  cm = classmethod(test)

jack = People()
People.cm()

通過(guò)類方法類內(nèi)的方法 ,不涉及的屬性和方法 不會(huì)被加載,節(jié)省內(nèi)存,快。

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = 'yellow'
     __age = 30   #私有屬性

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

def  __talk(self):
print "I am talking with Tom"

 def test():   ##沒(méi)有self   靜態(tài)調(diào)用     會(huì)把所有的屬性加載到內(nèi)存里。
print People.__age   #  通過(guò)類訪問(wèn)內(nèi)部變量

  sm = staticmethod(test)

jack = People()
People.sm()

裝飾調(diào)用類的方法:

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = 'yellow'
    __age = 30   #私有屬性

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #調(diào)用類的方法 
    def test(self):
        print ("this is class method")

    @staticmethod  #調(diào)用類的方法 
    def test1():    
        print ("this is static method")

jack = People()
People.test()
People.test1()
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI