日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:python3類(lèi)中的Dog如何用來(lái)轉(zhuǎn)化?

在python中我們把相似的一類(lèi)事物歸成一類(lèi),這樣講是不是就懂了呢?說(shuō)到dog這個(gè)單詞,大家都很熟悉,中文是小狗的意思。所以我們可以把不同種類(lèi)的狗都?xì)w為一類(lèi)。在python中的dog就類(lèi)似于這種作用。小編相信這個(gè)舉例大家都能明白,直接上定義理解了也記不長(zhǎng)久,不如找點(diǎn)好玩的樂(lè)子博大家一笑。

在陽(yáng)城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),營(yíng)銷(xiāo)型網(wǎng)站,外貿(mào)網(wǎng)站制作,陽(yáng)城網(wǎng)站建設(shè)費(fèi)用合理。


Dog類(lèi)是Animal的一個(gè)子類(lèi),主要講解三個(gè)裝飾器進(jìn)行方法向?qū)傩缘霓D(zhuǎn)換。

 轉(zhuǎn)換有兩個(gè)主要的好處:

 一是調(diào)用沒(méi)有參數(shù)的方法時(shí)不再需要加括號(hào),這樣的方法就可以當(dāng)做屬性來(lái)看

二是這樣定義的屬性賦值時(shí)可以進(jìn)行判斷,防止無(wú)效屬性的產(chǎn)生

這樣的轉(zhuǎn)換有兩種方式:

 一種是通過(guò)@property裝飾器,這個(gè)裝飾器系列一共三個(gè),如果只是想調(diào)用這個(gè)方法可以只使用@property這個(gè)裝飾器

一種是通過(guò)property函數(shù)

下面是一個(gè)例子,一些說(shuō)明可以在最后面定義的print_dog方法中查看

class Dog(Animal): # 類(lèi)的繼承
    
    # 只使用@property裝飾器與普通函數(shù)做對(duì)比
    def eating(self):
        print("I am eating")
    
    @property # 用這個(gè)裝飾器后這個(gè)方法調(diào)用就可以不加括號(hào),即將其轉(zhuǎn)化為屬性
    def running(self):
        if self.age >= 3 and self.age < 130:
            print("I am running")
        elif self.age > 0 and self.age <3:
            print("I can't run")
        else:
            print("please input true age")
            
    # 三種裝飾器,可以獲取、設(shè)置、刪除這樣定義的屬性
    @property
    def country(self):
        return self._country # 注意這個(gè)屬性之前從來(lái)沒(méi)有定義過(guò),是在下面的setter中定義的
    
    @country.setter # 用 函數(shù)名.setter 的裝飾器
    def country(self, value): # 設(shè)置這個(gè)屬性的值
        self._country = value
        
    @country.deleter
    def country(self):
        print("The attr country is deleted")
        
        
    # 用property函數(shù)實(shí)現(xiàn)和裝飾器相同的功能
    def get_city(self):
        return self._city
    
    def set_city(self, value):
        self._city = value
        
    def del_city(self, value):
        del self._city
        
    city = property(get_city, set_city, del_city, "where it is in")
        
    @staticmethod
    def print_dog():
        print("這是Animal的一個(gè)子類(lèi),主要講解三個(gè)裝飾器進(jìn)行方法向?qū)傩缘霓D(zhuǎn)換")
        print("類(lèi)繼承,創(chuàng)建實(shí)例時(shí)仍要指定父類(lèi)的普通屬性")
        print("@property裝飾器將方法轉(zhuǎn)化為屬性方式調(diào)用,此時(shí)的方法必須只有一個(gè)self參數(shù)")
        print("使用@property后可以看做一個(gè)屬性(country),用property函數(shù)可以達(dá)到相同的效果(city)")
        print("注:city中property第四個(gè)參數(shù)只是一個(gè)說(shuō)明,用Dog.city.__doc__來(lái)調(diào)用,即返回 where it is in")

創(chuàng)建實(shí)例

david = Dog("David", 2) # 創(chuàng)建實(shí)例
 
# 只用@property的情形
david.eating() # 調(diào)用普通方法
# I am eating
david.running # 用過(guò)@property裝飾器后不需要加括號(hào)
# I can't run
 
dean = Dog("Dean", 4)
dean.running # 在@property的屬性中進(jìn)行判斷
# I am running
 
 
# @property等三個(gè)裝飾器
david.country = "America"
print(david.country)
del david.country # 如果這里的不出現(xiàn)_country則這樣就可以刪除,但是用self.country則真的變成了屬性,所以為了區(qū)別多定義了一個(gè)_country
del david._country # 如今需要再把這個(gè)中間變量刪除掉才可以
# 無(wú)法再調(diào)用 david.country
 
# 不用裝飾器,用函數(shù)的形式
david.city = "Beijing"
print(david.city) # Beijing

在python3類(lèi)中dog轉(zhuǎn)化的方法就講到這里了,一種裝飾器,一種函數(shù)的方法任由小伙伴們選擇,小編在這里只作最常規(guī)的講解,具體的使用還要大家親自上手。


當(dāng)前文章:創(chuàng)新互聯(lián)Python教程:python3類(lèi)中的Dog如何用來(lái)轉(zhuǎn)化?
轉(zhuǎn)載來(lái)于:http://www.5511xx.com/article/cojjcjg.html