亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python基礎(chǔ)編程——類和實(shí)例

系統(tǒng) 2072 0

  在了解類和實(shí)例之前,需要先了解什么是面向?qū)ο螅裁从质敲嫦蜻^程。面向過程是以過程為中心實(shí)現(xiàn)一步步操作(相互調(diào)用,類似流水線思想);面向?qū)ο笫且允挛餅橹行模硞€(gè)事物可以擁有自己的多個(gè)行為,而另一個(gè)事物也可以擁有自己的多個(gè)行為。

  面向?qū)ο蟮幕A(chǔ):

    對(duì)象:沒有具體的事物,只能說是一切皆對(duì)象。如人、汽車、國家,.......

    對(duì)象的屬性和行為:這個(gè)對(duì)象有什么特征或者有什么行為方式。如人有身高、頭發(fā)顏色等屬性,人有睡覺、吃飯等行為

    類:將具有相同特征的屬性和行為的對(duì)象抽象出來封裝成一個(gè)可以描述多個(gè)對(duì)象的類。所以就有類是對(duì)象的抽象,對(duì)象是類的實(shí)例

    消息和方法:對(duì)象之間的通信傳遞簡稱消息,而方法是實(shí)現(xiàn)傳遞消息的可觀效果

    繼承:某個(gè)對(duì)象是由另一個(gè)對(duì)象產(chǎn)生的,也可以抽象為某個(gè)類是由另一個(gè)類產(chǎn)生的,這個(gè)對(duì)象就可以擁有另個(gè)對(duì)象的所有屬性和行為

    多態(tài):多個(gè)對(duì)象的相同行為會(huì)產(chǎn)生不一樣的結(jié)果

  面向?qū)ο蟮奶匦裕?

    由上述我們可以總結(jié)出抽象、封裝、繼承、多態(tài)4大特性

  本篇博客主要內(nèi)容就是簡單的講述這4大特性和面向?qū)ο蟮幕A(chǔ)知識(shí),在講述的過程中會(huì)擴(kuò)展一些知識(shí)

  抽象

    類是軟件開發(fā)過程中對(duì)業(yè)務(wù)相關(guān)的具有共同特征的事物的抽象。所以類在編程語言中是抽象的主要表現(xiàn)形式

    我們可以對(duì)“人”進(jìn)行抽象并抽象成Person類,因?yàn)槿祟愑幸恍┕餐奶卣鳎覀円部梢詫?duì)“動(dòng)物”進(jìn)行抽象并抽象成Animal類。

            
              #
            
            
               Person類
            
            
              class
            
            
               Person:
    
            
            
              """
            
            
              
    人的共有特征和行為
    
            
            
              """
            
            
              def
            
            
              __init__
            
            
              (self, high, weight):
        self.high 
            
            =
            
               high
        self.weight 
            
            =
            
               weight

    
            
            
              #
            
            
               說話
            
            
              def
            
            
               speak(self):
        
            
            
              pass
            
            
              #
            
            
               睡覺
            
            
              def
            
            
               sleep(self):
        
            
            
              pass
            
          

    代碼博主只寫了一丟丟Person共有的屬性和行為,有過編程經(jīng)驗(yàn)的朋友們都知道一些初始化方法,這里是初始化一些共有的屬性;還定義一些共有的方法;

    在接下來講的應(yīng)該都是封裝需要講述的

  封裝

    對(duì)于封裝,類可以封裝我們上述所說的具有共同屬性和行為的一種方式(大的封裝)。而封裝又不限于類,函數(shù)也是可以封裝一些共同的操作。下面涉及的知識(shí)都是封裝,只是封裝的方式會(huì)略有不同,我們先不談封裝知識(shí)。

    我們先對(duì)初始化方法進(jìn)行一個(gè)簡單的了解,python類里__init__()方法是對(duì)對(duì)象的初始化一些屬性的方法,但是這個(gè)方法不是創(chuàng)建對(duì)象。我們?cè)趧?chuàng)建類時(shí),這個(gè)__init__()方法就是我們需要放置一些我們考慮多個(gè)對(duì)象的共同的屬性還有一些需要初始化的操作(調(diào)用方法),既然__init__()方法不是創(chuàng)建對(duì)象的方法,那么創(chuàng)建對(duì)象的方法是哪個(gè)呢?__new__()方法。相信朋友們已經(jīng)見過了這個(gè)方法,這個(gè)方法在創(chuàng)建類時(shí)會(huì)自動(dòng)調(diào)用,不需要我們寫出來(待會(huì)寫出來用于測(cè)試)。這樣明了,創(chuàng)建對(duì)象的時(shí)候先調(diào)用__new__()方法返回一個(gè)對(duì)象,然后再調(diào)用__init__()方法初始化對(duì)象的屬性。

            
              class
            
            
               Person:
    
            
            
              def
            
            
              __new__
            
            (cls, *args, **
            
              kwargs):
        
            
            
              #
            
            
               父類調(diào)用__new__()返回一個(gè)對(duì)象
            
            
              return
            
             super().
            
              __new__
            
            
              (cls)

    
            
            
              def
            
            
              __init__
            
            
              (self, high, weight):
        self.high 
            
            =
            
               high
        self.weight 
            
            =
            
               weight


person 
            
            = Person(12, 135)
          

    在類中可以有很多屬性,我這說的很多不是屬性的個(gè)數(shù),也不是屬性值的類型,而是屬性的類型。以下代碼里的注釋可以忽略

    屬性的類型有:類屬性、類的私有屬性、類的保護(hù)屬性,實(shí)例屬性、實(shí)例的私有屬性、實(shí)例的保護(hù)屬性,這里說的保護(hù)屬性和私有屬性,在python中沒有嚴(yán)格說明,但是功能或者使用保留

      1、類屬性:

        類和實(shí)例都可以直接修改并且訪問類屬性

        在實(shí)例方法通過實(shí)例訪問和修改類屬性

        在類方法通過類名訪問和修改類屬性

        在靜態(tài)方法通過類名訪問和修改類的私屬性

        如果實(shí)例有與類屬性同名的實(shí)例屬性,那么修改和訪問就和類屬性沒有關(guān)系了

              
                class
              
              
                 Person:
    
              
              
                #
              
              
                 類的保護(hù)屬性初始值“12”
              
              
    count = 
              
                "
              
              
                12
              
              
                "
              
              
                def
              
              
                __init__
              
              
                (self, high, weight):
        self.high 
              
              =
              
                 high
        self.weight 
              
              =
              
                 weight

    
              
              
                def
              
              
                 self_set_count(self, count):
        self.count 
              
              =
              
                 count

    
              
              
                def
              
              
                 self_get_count(self):
        
              
              
                return
              
              
                 self.count

    
              
              
                #
              
              
                 類方法
              
              
                    @classmethod
    
              
              
                def
              
              
                 class_set_count(cls, count):
        cls.count 
              
              =
              
                 count

    @classmethod
    
              
              
                def
              
              
                 class_get_count(cls):
        
              
              
                return
              
              
                 cls.count

    
              
              
                #
              
              
                 靜態(tài)方法
              
              
                    @staticmethod
    
              
              
                def
              
              
                 static_set_count(count):
        Person.count 
              
              =
              
                 count

    @staticmethod
    
              
              
                def
              
              
                 static_get_count():
        
              
              
                return
              
              
                 Person.count


person 
              
              = Person(12, 135
              
                )

              
              
                #
              
              
                 實(shí)例直接修改并訪問類的保護(hù)屬性
              
              
person.count = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              
                (person.count)

              
              
                #
              
              
                 類名直接修改并訪問類的保護(hù)屬性
              
              
Person.count = 
              
                "
              
              
                36
              
              
                "
              
              
                print
              
              
                (Person.count)


              
              
                #
              
              
                 實(shí)例調(diào)用實(shí)例方法修改并訪問類的私有屬性
              
              
person.self_set_count(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.self_get_count())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用類方法修改并訪問類的私有屬性
              
              
Person.class_set_count(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.class_get_count())  
              
                #
              
              
                 36
              
              
                #
              
              
                 實(shí)例調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
person.static_set_count(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.static_get_count())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
Person.static_set_count(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.static_get_count())  
              
                #
              
              
                 36
              
            
View Code

      2、類的私有屬性:

        在實(shí)例方法通過實(shí)例訪問和修改類的私有屬性

        在類方法通過類名訪問和修改類的私有屬性

        在靜態(tài)方法通過類名訪問和修改類的私有屬性

        在類外類和實(shí)例都是不能訪問的;如果實(shí)例有與類的私有屬性同名的實(shí)例私有屬性,那么修改和訪問就和類的私有屬性沒有關(guān)系了

              
                class
              
              
                 Person:
    
              
              
                #
              
              
                 類屬性初始值12
              
              
    count = 12
    
              
                #
              
              
                 類的私有屬性初始值“12”
              
              
                __string
              
               = 
              
                "
              
              
                12
              
              
                "
              
              
                def
              
              
                __new__
              
              (cls, *args, **
              
                kwargs):
        
              
              
                return
              
               super().
              
                __new__
              
              
                (cls)

    
              
              
                def
              
              
                __init__
              
              
                (self, high, weight):
        self.high 
              
              =
              
                 high
        self.weight 
              
              =
              
                 weight
    
    
              
              
                def
              
              
                 self_set_string(self, string):
        self.
              
              
                __string
              
               =
              
                 string
    
    
              
              
                def
              
              
                 self_get_string(self):
        
              
              
                return
              
               self.
              
                __string
              
              
                #
              
              
                 類方法
              
              
                    @classmethod
    
              
              
                def
              
              
                 class_set_string(cls, string):
        cls.
              
              
                __string
              
               =
              
                 string
    
    @classmethod
    
              
              
                def
              
              
                 class_get_string(cls):
        
              
              
                return
              
               cls.
              
                __string
              
              
                #
              
              
                靜態(tài)方法
              
              
                    @staticmethod
    
              
              
                def
              
              
                 static_set_string(string):
        Person.
              
              
                __string
              
               =
              
                 string
    
    @staticmethod
    
              
              
                def
              
              
                 static_get_string():
        
              
              
                return
              
               Person.
              
                __string
              
              
                


person 
              
              = Person(12, 135
              
                )

              
              
                #
              
              
                 實(shí)例修改并訪問類屬性
              
              
person.count = 24

              
                print
              
              (person.count)    
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名修改并訪問類屬性
              
              
Person.count = 36

              
                print
              
              (Person.count)    
              
                #
              
              
                 36
              
              
                #
              
              
                 實(shí)例調(diào)用實(shí)例方法修改并訪問類的私有屬性
              
              
person.self_set_string(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.self_get_string())    
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用類方法修改并訪問類的私有屬性
              
              
Person.class_set_string(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.class_get_string())    
              
                #
              
              
                 36
              
              
                #
              
              
                 實(shí)例調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
person.static_set_string(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.static_get_string())    
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
Person.static_set_string(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.static_get_string())    
              
                #
              
              
                 36
              
            
View Code

      3、類的保護(hù)屬性:

        在類外通過類和實(shí)例訪問和修改類的保護(hù)屬性

        在實(shí)例方法通過實(shí)例訪問和修改類的保護(hù)屬性

        在類方法通過類名訪問和修改類的保護(hù)屬性

        在靜態(tài)方法通過類名訪問和修改類的保護(hù)屬性

        在模塊外類和實(shí)例都是不能訪問的;如果實(shí)例有與類的保護(hù)屬性同名的實(shí)例保護(hù)屬性,那么修改和訪問就和類的保護(hù)屬性沒有關(guān)系了

              
                class
              
              
                 Person:
    
              
              
                #
              
              
                 類的保護(hù)屬性初始值“12”
              
              
    _protection = 
              
                "
              
              
                12
              
              
                "
              
              
                def
              
              
                __init__
              
              
                (self, high, weight):
        self.high 
              
              =
              
                 high
        self.weight 
              
              =
              
                 weight
    
    
              
              
                def
              
              
                 self_set_protection(self, protection):
        self._protection 
              
              =
              
                 protection
    
    
              
              
                def
              
              
                 self_get_protection(self):
        
              
              
                return
              
              
                 self._protection
    
    
              
              
                #
              
              
                 類方法
              
              
                    @classmethod
    
              
              
                def
              
              
                 class_set_protection(cls, protection):
        cls._protection 
              
              =
              
                 protection
    
    @classmethod
    
              
              
                def
              
              
                 class_get_protection(cls):
        
              
              
                return
              
              
                 cls._protection
    
    
              
              
                #
              
              
                靜態(tài)方法
              
              
                    @staticmethod
    
              
              
                def
              
              
                 static_set_protection(protection):
        Person._protection 
              
              =
              
                 protection
    
    @staticmethod
    
              
              
                def
              
              
                 static_get_protection():
        
              
              
                return
              
              
                 Person._protection


person 
              
              = Person(12, 135
              
                )

              
              
                #
              
              
                 實(shí)例直接修改并訪問類的保護(hù)屬性
              
              
person._protection = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              
                (person._protection)

              
              
                #
              
              
                 類名直接修改并訪問類的保護(hù)屬性
              
              
Person._protection = 
              
                "
              
              
                36
              
              
                "
              
              
                print
              
              
                (Person._protection)


              
              
                #
              
              
                 實(shí)例調(diào)用實(shí)例方法修改并訪問類的私有屬性
              
              
person.self_set_protection(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.self_get_protection())    
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用類方法修改并訪問類的私有屬性
              
              
Person.class_set_protection(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.class_get_protection())    
              
                #
              
              
                 36
              
              
                #
              
              
                 實(shí)例調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
person.static_set_protection(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.static_get_protection())    
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
Person.static_set_protection(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.static_get_protection())    
              
                #
              
              
                 36
              
            
View Code

      4、實(shí)例屬性:

        在類外通過類和實(shí)例訪問和修改實(shí)例屬性

        在實(shí)例方法通過實(shí)例訪問和修改實(shí)例屬性

        在類方法通過類名訪問和修改實(shí)例屬性

        在靜態(tài)方法通過類名訪問和修改實(shí)例屬性

        如果實(shí)例有與類屬性同名的實(shí)例屬性,那么修改和訪問就和類屬性沒有關(guān)系了

              
                class
              
              
                 Person:

    
              
              
                def
              
              
                __init__
              
              
                (self, high, weight):
        
              
              
                #
              
              
                 實(shí)例屬性
              
              
        self.high =
              
                 high
        self.weight 
              
              =
              
                 weight

    
              
              
                def
              
              
                 self_set_high(self, high):
        self.high 
              
              =
              
                 high

    
              
              
                def
              
              
                 self_get_high(self):
        
              
              
                return
              
              
                 self.high

    
              
              
                #
              
              
                 類方法
              
              
                    @classmethod
    
              
              
                def
              
              
                 class_set_high(cls, high):
        cls.high 
              
              =
              
                 high

    @classmethod
    
              
              
                def
              
              
                 class_get_high(cls):
        
              
              
                return
              
              
                 cls.high

    
              
              
                #
              
              
                 靜態(tài)方法
              
              
                    @staticmethod
    
              
              
                def
              
              
                 static_set_high(high):
        Person.high 
              
              =
              
                 high

    @staticmethod
    
              
              
                def
              
              
                 static_get_high():
        
              
              
                return
              
              
                 Person.high


person 
              
              = Person(12, 135
              
                )

              
              
                #
              
              
                 實(shí)例直接修改并訪問類的保護(hù)屬性
              
              
person.high = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              
                (person.high)

              
              
                #
              
              
                 類名直接修改并訪問類的保護(hù)屬性
              
              
Person.high = 
              
                "
              
              
                36
              
              
                "
              
              
                print
              
              
                (Person.high)


              
              
                #
              
              
                 實(shí)例調(diào)用實(shí)例方法修改并訪問類的私有屬性
              
              
person.self_set_high(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.self_get_high())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用類方法修改并訪問類的私有屬性
              
              
Person.class_set_high(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.class_get_high())  
              
                #
              
              
                 36
              
              
                #
              
              
                 實(shí)例調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
person.static_set_high(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.static_get_high())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
Person.static_set_high(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.static_get_high())  
              
                #
              
              
                 36
              
            
View Code

      5、實(shí)例的私有屬性:

        在實(shí)例方法通過實(shí)例訪問和修改實(shí)例私有屬性

        在類方法通過類名訪問和修改實(shí)例私有屬性

        在靜態(tài)方法通過類名訪問和修改實(shí)例私有屬性

        在類外通過類和實(shí)例訪問和修改實(shí)例私有屬性,相當(dāng)于自身動(dòng)態(tài)增加了一個(gè)屬性,所以在類外是不能訪問的;如果實(shí)例有與類的私有屬性同名的實(shí)例私有屬性,那么修改和訪問就和類的私有屬性沒有關(guān)系了

              
                class
              
              
                 Person:

    
              
              
                def
              
              
                __init__
              
              
                (self, high, weight):
        
              
              
                #
              
              
                 實(shí)例屬性
              
              
        self.high =
              
                 high
        self.
              
              
                __weight
              
               =
              
                 weight

    
              
              
                def
              
              
                 self_set_weight(self, weight):
        self.
              
              
                __weight
              
               =
              
                 weight

    
              
              
                def
              
              
                 self_get_weight(self):
        
              
              
                return
              
               self.
              
                __weight
              
              
                #
              
              
                 類方法
              
              
                    @classmethod
    
              
              
                def
              
              
                 class_set_weight(cls, weight):
        cls.
              
              
                __weight
              
               =
              
                 weight

    @classmethod
    
              
              
                def
              
              
                 class_get_weight(cls):
        
              
              
                return
              
               cls.
              
                __weight
              
              
                #
              
              
                 靜態(tài)方法
              
              
                    @staticmethod
    
              
              
                def
              
              
                 static_set_weight(weight):
        Person.
              
              
                __weight
              
               =
              
                 weight

    @staticmethod
    
              
              
                def
              
              
                 static_get_weight():
        
              
              
                return
              
               Person.
              
                __weight
              
              
                


person 
              
              = Person(12, 135
              
                )

              
              
                #
              
              
                 這里是實(shí)例動(dòng)態(tài)增加的屬性
              
              
person.
              
                __weight
              
               = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              (person.
              
                __weight
              
              
                )

              
              
                #
              
              
                 這里是類名動(dòng)態(tài)增加的屬性
              
              
Person.
              
                __weight
              
               = 
              
                "
              
              
                36
              
              
                "
              
              
                print
              
              (Person.
              
                __weight
              
              
                )


              
              
                #
              
              
                 實(shí)例調(diào)用實(shí)例方法修改并訪問類的私有屬性
              
              
person.self_set_weight(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.self_get_weight())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用類方法修改并訪問類的私有屬性
              
              
Person.class_set_weight(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.class_get_weight())  
              
                #
              
              
                 36
              
              
                #
              
              
                 實(shí)例調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
person.static_set_weight(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.static_get_weight())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
Person.static_set_weight(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.static_get_weight())  
              
                #
              
              
                 36
              
            
View Code

      6、實(shí)例的保護(hù)屬性:

        在實(shí)例方法通過實(shí)例訪問和修改實(shí)例保護(hù)屬性

        在類方法通過類名訪問和修改實(shí)例保護(hù)屬性

        在靜態(tài)方法通過類名訪問和修改實(shí)例保護(hù)屬性

        在類外通過類和實(shí)例訪問和修改實(shí)例保護(hù)屬性,相當(dāng)于自身動(dòng)態(tài)增加了一個(gè)屬性,所以在類外是不能訪問的;如果實(shí)例有與類的私有屬性同名的實(shí)例私有屬性,那么修改和訪問就和類的私有屬性沒有關(guān)系了   

              
                class
              
              
                 Person:

    
              
              
                def
              
              
                __init__
              
              
                (self, high, weight):
        
              
              
                #
              
              
                 實(shí)例屬性
              
              
        self.high =
              
                 high
        
              
              
                #
              
              
                 實(shí)例保護(hù)屬性
              
              
        self._weight =
              
                 weight

    
              
              
                def
              
              
                 self_set_weight(self, weight):
        self._weight 
              
              =
              
                 weight

    
              
              
                def
              
              
                 self_get_weight(self):
        
              
              
                return
              
              
                 self._weight

    
              
              
                #
              
              
                 類方法
              
              
                    @classmethod
    
              
              
                def
              
              
                 class_set_weight(cls, weight):
        cls._weight 
              
              =
              
                 weight

    @classmethod
    
              
              
                def
              
              
                 class_get_weight(cls):
        
              
              
                return
              
              
                 cls._weight

    
              
              
                #
              
              
                 靜態(tài)方法
              
              
                    @staticmethod
    
              
              
                def
              
              
                 static_set_weight(weight):
        Person._weight 
              
              =
              
                 weight

    @staticmethod
    
              
              
                def
              
              
                 static_get_weight():
        
              
              
                return
              
              
                 Person._weight


person 
              
              = Person(12, 135
              
                )

              
              
                #
              
              
                 這里是實(shí)例動(dòng)態(tài)增加的屬性
              
              
person._weight = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              
                (person._weight)

              
              
                #
              
              
                 這里是類名動(dòng)態(tài)增加的屬性
              
              
Person._weight = 
              
                "
              
              
                36
              
              
                "
              
              
                print
              
              
                (Person._weight)


              
              
                #
              
              
                 實(shí)例調(diào)用實(shí)例方法修改并訪問類的私有屬性
              
              
person.self_set_weight(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.self_get_weight())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用類方法修改并訪問類的私有屬性
              
              
Person.class_set_weight(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.class_get_weight())  
              
                #
              
              
                 36
              
              
                #
              
              
                 實(shí)例調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
person.static_set_weight(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.static_get_weight())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 類名調(diào)用靜態(tài)方法修改并訪問類的私有屬性
              
              
Person.static_set_weight(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (Person.static_get_weight())  
              
                #
              
              
                 36
              
            
View Code

?    關(guān)于類里面涉及屬性都舉例說明了(親測(cè)有效),但是類中出現(xiàn)了幾種方法,這個(gè)方法也是關(guān)鍵。類的方法類型:類方法、實(shí)例方法、靜態(tài)方法

       主要是驗(yàn)證誰可以調(diào)用3大方法

       上述代碼已經(jīng)驗(yàn)證了實(shí)例可以調(diào)用實(shí)例方法、類名可以調(diào)用類方法、類名可以調(diào)用靜態(tài)方法

       實(shí)例可以調(diào)用類方法和靜態(tài)方法

       類名可以調(diào)用實(shí)例方法,傳參必須傳遞一個(gè)具體實(shí)例

              
                class
              
              
                 Person:

    
              
              
                def
              
              
                __init__
              
              
                (self, high, weight):
        
              
              
                #
              
              
                 實(shí)例屬性
              
              
        self.high =
              
                 high
        
              
              
                #
              
              
                 實(shí)例保護(hù)屬性
              
              
        self._weight =
              
                 weight

    
              
              
                def
              
              
                 self_set_weight(self, weight):
        self._weight 
              
              =
              
                 weight

    
              
              
                def
              
              
                 self_get_weight(self):
        
              
              
                return
              
              
                 self._weight

    
              
              
                #
              
              
                 類方法
              
              
                    @classmethod
    
              
              
                def
              
              
                 class_set_weight(cls, weight):
        cls._weight 
              
              =
              
                 weight

    @classmethod
    
              
              
                def
              
              
                 class_get_weight(cls):
        
              
              
                return
              
              
                 cls._weight

    
              
              
                #
              
              
                 靜態(tài)方法
              
              
                    @staticmethod
    
              
              
                def
              
              
                 static_set_weight(weight):
        Person._weight 
              
              =
              
                 weight

    @staticmethod
    
              
              
                def
              
              
                 static_get_weight():
        
              
              
                return
              
              
                 Person._weight


person 
              
              = Person(12, 135
              
                )


              
              
                #
              
              
                 實(shí)例調(diào)用類方法
              
              
person.class_set_weight(
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (person.class_get_weight())  
              
                #
              
              
                 24
              
              
                
#
              
              
                 實(shí)例調(diào)用靜態(tài)方法
              
              
person.static_set_weight(
              
                "
              
              
                36
              
              
                "
              
              
                )

              
              
                print
              
              (person.static_get_weight())  
              
                #
              
              
                 36
              
              
                #
              
              
                 類名調(diào)用實(shí)例方法,第一個(gè)參數(shù)必須是具體的實(shí)例
              
              
Person.self_set_weight(person, 
              
                "
              
              
                24
              
              
                "
              
              
                )

              
              
                print
              
              (Person.self_get_weight(person))  
              
                #
              
              
                 24
              
            
View Code

?  總結(jié):

    1、對(duì)象名可以調(diào)用靜態(tài)方法、實(shí)例方法、類方法

    2、類名可以調(diào)用靜態(tài)方法、類方法、實(shí)例方法,但在調(diào)用實(shí)例方法時(shí)需要將第一個(gè)參數(shù)self傳入,傳入的其實(shí)是對(duì)象本身,不帶參數(shù)報(bào)錯(cuò)

    3、實(shí)例屬性通過實(shí)例方法的 進(jìn)行訪問,靜態(tài)方法和類方法無法訪問實(shí)例屬性

    4、類屬性通過類方法的 進(jìn)行訪問,或者在其他函數(shù)內(nèi)部通過<類名.>訪問

  繼承

    當(dāng)子類/子對(duì)象和父類/父對(duì)象有很多共同之處,但是又有不同之處,這個(gè)時(shí)候我們就可以使用繼承機(jī)制。繼承父類的屬性和行為,其他屬性和行為需自己定義。

    python用的最多的繼承是單繼承,當(dāng)然python也提供多繼承的,但是盡可能的不要使用多繼承,如果多繼承多了的話,編程的思維很容易亂。

    類繼承需在類名添加括號(hào),在括號(hào)里添加父類名稱,這還沒有實(shí)現(xiàn)繼承。使用super關(guān)鍵字調(diào)用父類的方法,屬性可以直接拿來使用。父類可以看作是對(duì)子類的共同屬性和方法的抽象,將他們封裝成我們需要的父類

    類繼承的幾個(gè)關(guān)鍵點(diǎn):

      1、子類繼承可以繼承父類的初始化函數(shù)__init__(),但是子類不寫初始化函數(shù)時(shí),會(huì)自動(dòng)/默認(rèn)調(diào)用父類的初始化函數(shù);子類定義初始化函數(shù),也一定要調(diào)用父類初始化函數(shù)

      這里繼承是只能繼承父類的類屬性,不能繼承父類對(duì)象的屬性,若想也擁有同樣的屬性,所以才繼承父類的初始化函數(shù)。

      抱歉!改天更新...

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久这里只有精品6 | 有码 在线 | 久久精品免视看国产陈冠希 | 操操操网站 | 操视频网站 | 这里只有精品22 | 亚洲国产www | 人人爽天天爽夜夜爽qc | 激情奇米网 | 日日a.v拍夜夜添久久免费 | 中国女人内谢59xxxxx | 超碰最新上传 | 丁香狠狠色婷婷久久综合 | 毛片色| 亚洲精品国产男人的天堂 | 日韩在线看片中文字幕不卡 | 性欧美另类老妇高清 | 免费一级a毛片在线播放视 免费一级成人毛片 | 国产精品成人观看视频国产 | 国产一级特黄特色aa毛片 | 最新午夜韩国理论片77网 | 狠狠操天天爱 | 一级无毛片 | 日本不卡1 | 天海翼一区 在线播放 | 中文字幕91在线 | 成年人看的黄色 | 欧美巨大video粗暴 | 亚洲精品久久一区二区无卡 | 在线播放国产精品 | 亚洲欧美日韩高清中文在线 | 久久99久久精品久久久久久 | 久99久爱精品免费观看视频 | 亚洲线精品一区二区三区 | 久久国产精品岛国搬运工 | 四虎免费在线视频 | 中文字幕一区二区区免 | 一级女性全黄生活片看看 | 日韩欧美一区二区三区在线 | 日本高清一级片 | 爱爱爱免费视频 |