国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python3类中的Dog如何用来转化?

python3类中的Dog如何用来转化?

头像

小妮浅浅

2020-11-16 13:49:542813浏览 · 0收藏 · 0评论

在python中我们把相似的一类事物归成一类,这样讲是不是就懂了呢?说到dog这个单词,大家都很熟悉,中文是小狗的意思。所以我们可以把不同种类的狗都归为一类。在python中的dog就类似于这种作用。小编相信这个举例大家都能明白,直接上定义理解了也记不长久,不如找点好玩的乐子博大家一笑。


Dog类是Animal的一个子类,主要讲解三个装饰器进行方法向属性的转换。

 转换有两个主要的好处:

 一是调用没有参数的方法时不再需要加括号,这样的方法就可以当做属性来看

二是这样定义的属性赋值时可以进行判断,防止无效属性的产生

这样的转换有两种方式:

 一种是通过@property装饰器,这个装饰器系列一共三个,如果只是想调用这个方法可以只使用@property这个装饰器

一种是通过property函数

下面是一个例子,一些说明可以在最后面定义的print_dog方法中查看

class Dog(Animal): # 类的继承
    
    # 只使用@property装饰器与普通函数做对比
    def eating(self):
        print("I am eating")
    
    @property # 用这个装饰器后这个方法调用就可以不加括号,即将其转化为属性
    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")
            
    # 三种装饰器,可以获取、设置、删除这样定义的属性
    @property
    def country(self):
        return self._country # 注意这个属性之前从来没有定义过,是在下面的setter中定义的
    
    @country.setter # 用 函数名.setter 的装饰器
    def country(self, value): # 设置这个属性的值
        self._country = value
        
    @country.deleter
    def country(self):
        print("The attr country is deleted")
        
        
    # 用property函数实现和装饰器相同的功能
    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的一个子类,主要讲解三个装饰器进行方法向属性的转换")
        print("类继承,创建实例时仍要指定父类的普通属性")
        print("@property装饰器将方法转化为属性方式调用,此时的方法必须只有一个self参数")
        print("使用@property后可以看做一个属性(country),用property函数可以达到相同的效果(city)")
        print("注:city中property第四个参数只是一个说明,用Dog.city.__doc__来调用,即返回 where it is in")


创建实例

david = Dog("David", 2) # 创建实例
 
# 只用@property的情形
david.eating() # 调用普通方法
# I am eating
david.running # 用过@property装饰器后不需要加括号
# I can't run
 
dean = Dog("Dean", 4)
dean.running # 在@property的属性中进行判断
# I am running
 
 
# @property等三个装饰器
david.country = "America"
print(david.country)
del david.country # 如果这里的不出现_country则这样就可以删除,但是用self.country则真的变成了属性,所以为了区别多定义了一个_country
del david._country # 如今需要再把这个中间变量删除掉才可以
# 无法再调用 david.country
 
# 不用装饰器,用函数的形式
david.city = "Beijing"
print(david.city) # Beijing

 

在Python3类中dog转化的方法就讲到这里了,一种装饰器,一种函数的方法任由小伙伴们选择,小编在这里只作最常规的讲解,具体的使用还要大家亲自上手。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

小雪被老汉玩得嗷嗷叫| 巜强壮的公2做爰观看| 两个奶头被吃得又翘又肿特别疼| 东北老阿姨高清免费观看电视剧| 欧美黑粗大硬巴XXOO| 恋爱之瘾电影完整版在线观看免费| 免费B站看大片真人电视剧| 《禁忌2》的完整演员表| 17·C1起草视频| 《高压监狱5》完整版| 女性扒开大腿内侧小肚子痒| 扌桑辶鬲的照片| 免费B站看大片真人电视剧| 没戴奶罩他含了一天| 《炸裂吧!巨棒》免费阅读漫画| 白石茉莉奈| 裸吻| 《初次深交流》韩剧| 妈妈がだけの心に漂う| 久久午夜国产精品WWW| 久久久久精品| 拔小萝卜免费观看全集电视剧| 宝宝今晚不带小雨伞| 百度推荐官| 人犬兽人在线观看免费完整| 坤坤寒进桃子里在线看歌词 | 艳妇乳肉豪妇荡乳XXXOO图片| 扒开女人内裤猛进猛出流出白液| 《炸裂吧!巨棒》免费阅读漫画| 按摩师把我添高潮了6次| 班主任解开内裤让我桶她| 内衣秀| 《再来一次好吗》动漫观看 | 香港明星| 少女的夜晚初体验免费观看电视剧| 军人野外吮她的花蒂沈静舒| 初二学生小馒头| 免费网站在线观看人数在显示| 臣卜扌暴扌 圭辶鬲猛| 女生给男生吃小头头| 宫泽里惠