日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2040 0

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

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

    對(duì)象:沒(méi)有具體的事物,只能說(shuō)是一切皆對(duì)象。如人、汽車(chē)、國(guó)家,.......

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

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

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

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

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

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

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

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

  抽象

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

    我們可以對(duì)“人”進(jìn)行抽象并抽象成Person類(lèi),因?yàn)槿祟?lèi)有一些共同的特征,我們也可以對(duì)“動(dòng)物”進(jìn)行抽象并抽象成Animal類(lèi)。

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

    
            
            
              #
            
            
               說(shuō)話
            
            
              def
            
            
               speak(self):
        
            
            
              pass
            
            
              #
            
            
               睡覺(jué)
            
            
              def
            
            
               sleep(self):
        
            
            
              pass
            
          

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

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

  封裝

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

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

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

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


person 
            
            = Person(12, 135)
          

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

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

      1、類(lèi)屬性:

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

        在實(shí)例方法通過(guò)實(shí)例訪問(wèn)和修改類(lèi)屬性

        在類(lèi)方法通過(guò)類(lèi)名訪問(wèn)和修改類(lèi)屬性

        在靜態(tài)方法通過(guò)類(lèi)名訪問(wèn)和修改類(lèi)的私屬性

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

              
                class
              
              
                 Person:
    
              
              
                #
              
              
                 類(lèi)的保護(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

    
              
              
                #
              
              
                 類(lèi)方法
              
              
                    @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í)例直接修改并訪問(wèn)類(lèi)的保護(hù)屬性
              
              
person.count = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              
                (person.count)

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


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

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

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

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

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

      2、類(lèi)的私有屬性:

        在實(shí)例方法通過(guò)實(shí)例訪問(wèn)和修改類(lèi)的私有屬性

        在類(lèi)方法通過(guò)類(lèi)名訪問(wèn)和修改類(lèi)的私有屬性

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

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

              
                class
              
              
                 Person:
    
              
              
                #
              
              
                 類(lèi)屬性初始值12
              
              
    count = 12
    
              
                #
              
              
                 類(lèi)的私有屬性初始值“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
              
              
                #
              
              
                 類(lèi)方法
              
              
                    @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í)例修改并訪問(wèn)類(lèi)屬性
              
              
person.count = 24

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

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

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

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

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

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

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

        在類(lèi)外通過(guò)類(lèi)和實(shí)例訪問(wèn)和修改類(lèi)的保護(hù)屬性

        在實(shí)例方法通過(guò)實(shí)例訪問(wèn)和修改類(lèi)的保護(hù)屬性

        在類(lèi)方法通過(guò)類(lèi)名訪問(wèn)和修改類(lèi)的保護(hù)屬性

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

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

              
                class
              
              
                 Person:
    
              
              
                #
              
              
                 類(lèi)的保護(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
    
    
              
              
                #
              
              
                 類(lèi)方法
              
              
                    @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í)例直接修改并訪問(wèn)類(lèi)的保護(hù)屬性
              
              
person._protection = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              
                (person._protection)

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


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

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

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

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

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

      4、實(shí)例屬性:

        在類(lèi)外通過(guò)類(lèi)和實(shí)例訪問(wèn)和修改實(shí)例屬性

        在實(shí)例方法通過(guò)實(shí)例訪問(wèn)和修改實(shí)例屬性

        在類(lèi)方法通過(guò)類(lèi)名訪問(wèn)和修改實(shí)例屬性

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

        如果實(shí)例有與類(lèi)屬性同名的實(shí)例屬性,那么修改和訪問(wèn)就和類(lèi)屬性沒(méi)有關(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

    
              
              
                #
              
              
                 類(lèi)方法
              
              
                    @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í)例直接修改并訪問(wèn)類(lèi)的保護(hù)屬性
              
              
person.high = 
              
                "
              
              
                24
              
              
                "
              
              
                print
              
              
                (person.high)

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


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

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

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

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

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

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

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

        在類(lèi)方法通過(guò)類(lèi)名訪問(wèn)和修改實(shí)例私有屬性

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

        在類(lèi)外通過(guò)類(lèi)和實(shí)例訪問(wèn)和修改實(shí)例私有屬性,相當(dāng)于自身動(dòng)態(tài)增加了一個(gè)屬性,所以在類(lèi)外是不能訪問(wèn)的;如果實(shí)例有與類(lèi)的私有屬性同名的實(shí)例私有屬性,那么修改和訪問(wèn)就和類(lèi)的私有屬性沒(méi)有關(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
              
              
                #
              
              
                 類(lèi)方法
              
              
                    @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
              
              
                )

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


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

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

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

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

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

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

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

        在類(lèi)方法通過(guò)類(lèi)名訪問(wèn)和修改實(shí)例保護(hù)屬性

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

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

    
              
              
                #
              
              
                 類(lèi)方法
              
              
                    @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)

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


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

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

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

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

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

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

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

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

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

       類(lè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

    
              
              
                #
              
              
                 類(lèi)方法
              
              
                    @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)用類(lèi)方法
              
              
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
              
              
                #
              
              
                 類(lèi)名調(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í)例方法、類(lèi)方法

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

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

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

  繼承

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

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

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

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

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

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

      抱歉!改天更新...

?


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 文登市| 盈江县| 天峨县| 时尚| 灌阳县| 景东| 大新县| 翁源县| 十堰市| 和平县| 南丰县| 焉耆| 西青区| 玛曲县| 张家界市| 长宁区| 叙永县| 林甸县| 大足县| 辽宁省| 江安县| 左贡县| 宜兴市| 阳西县| 成都市| 广宗县| 兰西县| 梅州市| 泰顺县| 寿阳县| 东山县| 社旗县| 安国市| 台北市| 连南| 措美县| 青田县| 新晃| 湖南省| 淮南市| 安西县|