zoukankan      html  css  js  c++  java
  • 类的装饰器

    # property装饰器是用来将类内的函数属性伪装成数据属性
    # class People:
    # def __init__(self,name,weight,height):
    # self.name=name
    # self.weight=weight
    # self.height=height
    #
    # @property
    # def bmi(self):
    # return self.weight / (self.height ** 2)
    #
    # obj=People('egon',80,1.83)
    # obj.height=1.85
    # obj.weight=75

    # print(obj.bmi()) #本来应该这么使用bmi的方法,但是bmi看上去更加像一个属性,而非方法,所以在bmi方法的头顶加了一个装饰器@property,这样调用的时候只需要 类名.方法名 其实内部执行过程就是把程序执行了一遍
    # print(obj.bmi)


    # 了解....
    # class People:
    # def __init__(self,name):
    # self.__name=name
    #
    # @property
    # def name(self):
    # return '<名字:%s>' %self.__name
    #
    # @name.setter #黄色字体必须一样 setter方法可以为__name属性赋值
    # def name(self,obj):
    # if type(obj) is not str:
    # print('name必须为str类型')
    # return
    # self.__name=obj
    #
    # @name.deleter #deleter方法提供删除的接口,有此装饰器,才可以用del
    # def name(self):
    # # print('不让删') #可以不让删除
    # del self.__name #也可以删除
    #
    # obj=People('egon')
    #
    # # print(obj.name)
    # # obj.name='EGON'
    # # obj.name=123
    # # print(obj.name)
    #
    # del obj.name
    # print(obj.__dict__)


    例(古老的写法,了解即可):
    class People:
    def __init__(self,name):
    self.__name=name

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

    def set_name(self,obj):
    if type(obj) is not str:
    print('name必须为str类型')
    return
    self.__name=obj

    def del_name(self):
    # print('不让删')
    #del self.__name

    name=property(get_name,set_name,del_name)

    obj=People('egon')

    # print(obj.name)
    # obj.name='EGON'
    # obj.name=123
    # print(obj.name)

    del obj.name
    print(obj.__dict__)

  • 相关阅读:
    Python创建空DataFrame及添加行数据
    Python读取Excel文件
    Python拆分DataFrame
    Python中识别DataFrame中的nan
    Python线性回归算法【解析解,sklearn机器学习库】
    Python鸢尾花分类实现
    Python机器学习入门
    Python使用map,reduce高阶函数模拟实现Spark的reduceByKey算子功能
    Python参数传递(传值&传引用)
    Python迭代器
  • 原文地址:https://www.cnblogs.com/haiguixiansheng/p/9513471.html
Copyright © 2011-2022 走看看