zoukankan      html  css  js  c++  java
  • 08.1 property 装饰器

    # -*- coding: utf-8 -*-
    # @Time : 2021/8/1 17:47
    # @Author : zy7y
    # @Gitee : https://gitee.com/zy7y
    # @File : property_01.py
    # @Project : PythonBooks
    from datetime import date, datetime
    from dis import dis
    
    
    class User:
    
        def __init__(self, name, *, birthday):
            """ * 后面的 参数 birthday 必须已关键字参数形式传递"""
            self.name = name
            self.birthday = birthday
            self._age = 0 #  代码规范,表示不想对外暴露
            self.__demo = None #  私有属性,Python内部会把其转换为 类名__demo 形式
    
        def get_age(self):
            return datetime.now().year - self.birthday.year
    
        @property
        def age(self):
            """ get
            @property: 计算属性 调用时 只需要 对象.age即可
            :return:
            """
            return datetime.now().year - self.birthday.year
    
        @age.setter
        def age(self, value):
            """set
    
            :param value:
            :return:
            """
            self._age = value
    
    
    if __name__ == '__main__':
        user = User("zy7y", birthday=date(1987,1,1))
        print(user.age)
        # print(user.__demo)  #  访问私有属性 AttributeError: 'User' object has no attribute '__demo'
        print(user._User__demo)
        print(dis(User))    #  dis 可打印对象的字节码
    
    作者:zy7y
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    js中有趣的闭包(closure)
    js常见函数汇总
    js时间处理
    一些JavaScript的技巧、秘诀和最佳实践
    js创建对象的6种方式
    js数组常用方法汇总
    左右点击分页方法
    dedecms 添加自定义图字段,调用时出错
    js判断PC端与移动端跳转
    php验证码
  • 原文地址:https://www.cnblogs.com/zy7y/p/15087226.html
Copyright © 2011-2022 走看看