zoukankan      html  css  js  c++  java
  • 特性property

    #property装饰器用于将被装饰的方法伪装成一个数据属性,在使用时可以不用加括号而直接引用
    # class People:
    # def __init__(self,name,weight,height):
    # self.name=name
    # self.weight=weight
    # self.height=height
    #
    # @property
    # def bmi(self): # bmi本来应该是一个数据属性,变成函数后,调用需要obj.bmi() .怎么才能让使用者
    # 调用时和调用正常数据属性一样,需要用到property来装饰。
    # return self.weight / (self.height ** 2)
    #
    # peo1=People('egon',75,1.8)
    #
    # peo1.height=1.85
    # print(peo1.bmi) # 这样调用就不需要bmi后面加括号了


    '''
    class People:
    def __init__(self,name):
    self.__name=name

    @property # 查看obj.name # 直接用obj.name就可以查看
    def name(self):
    return '<名字是:%s>' %self.__name

    @name.setter #修改obj.name=值 # 修改属性值,需要把修改的值传入,然后self.__name初始化值为name
    def name(self,name):
    if type(name) is not str:
    raise TypeError('名字必须是str类型傻叉')
    self.__name=name

    @name.deleter #删除del obj.name # 直接在外部 del peo1.name
    def name(self):
    # raise PermissionError('不让删')
    print('不让删除傻叉')
    # del self.__name

    peo1=People('egon')
    # print(peo1.name)

    # print(peo1.name)

    # peo1.name='EGON'
    # print(peo1.name)

    del peo1.name

    '''


    class People:
    def __init__(self,name):
    self.__name=name


    def tell_name(self):
    return '<名字是:%s>' %self.__name

    def set_name(self,name):
    if type(name) is not str:
    raise TypeError('名字必须是str类型傻叉')
    self.__name=name

    def del_name(self):
    print('不让删除傻叉')

    name=property(tell_name,set_name,del_name) # 这里是固定顺序


    peo1=People('egon')
    del peo1.name # 顺序不重要,顶多先修改
    peo1.name='EGON'
    print(peo1.name)
    print(peo1.name)
    # peo1.name='EGON'
    # print(peo1.name)
    # del peo1.name
  • 相关阅读:
    [C++] const 限定符
    [国嵌笔记][028][Bootloader设计蓝图]
    [国嵌笔记][027][ARM协处理器访问指令]
    [国嵌笔记][026][ARM伪指令]
    [国嵌笔记][025][ARM指令分类学习]
    [国嵌笔记][024][ARM汇编编程概述]
    [国嵌笔记][023][ARM寻址方式]
    [国嵌笔记][021-022][ARM处理器工作模式]
    [国嵌笔记][020][ARM家族大检阅]
    [国嵌笔记][019][Eclipse集成开发环境]
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9238928.html
Copyright © 2011-2022 走看看