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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    你不是在拯救世界就是在拯救世界的路上
    你可以去当程序员了
    郭美美是个好姑娘
    据说有个老太太
    生命的尽头
    有关程序的50个至理名言
    程序员是这样的
    新买移动硬盘
    如果有天你看到我疯了,其实就是你疯了
    写字楼里写字间
  • 原文地址:https://www.cnblogs.com/zy7y/p/15087226.html
Copyright © 2011-2022 走看看