【7.1】property动态属性

Python中有一个被称为属性函数(property)的小概念

  • 将类方法转换为只读属性
  • 重新实现一个属性的setter和getter方法
 1 #!/user/bin/env python
 2 # -*- coding:utf-8 -*-
 3 from datetime import date, datetime
 4
 5
 6 class User:
 7     def __init__(self, name, birthday):
 8         self.name = name
 9         self.birthday = birthday
10         self._age = 0
11
12     def get_age(self):
13         return datetime.now().year - self.birthday.year
14
15     @property
16     def age(self):
17         return datetime.now().year - self.birthday.year
18
19     @age.setter
20     def age(self, value):
21         self._age = value
22
23
24 # 这里使用 __name__ = ‘__main__‘ 条件判断是为了,在其他模块中引用的时候,不会执行测试代码
25 if __name__ == ‘__main__‘:
26     user = User(‘zy‘, date(year=1998, month=6, day=8))
27     user.age = 30
28     print(user._age)
29     print(user.age)
30     print(user.get_age())
30
21
21

  

原文地址:https://www.cnblogs.com/zydeboke/p/11259003.html

时间: 2024-08-05 07:26:12

【7.1】property动态属性的相关文章

元类编程--property动态属性

from datetime import date, datetime class User: def __init__(self, name, birthday): self.name = name self.birthday = birthday self._age = 0 # def get_age(self): # return datetime.now().year - self.birthday.year @property #动态属性 def age(self): #属性描述符,g

Python中的动态属性与描述符

动态属性与属性描述符 属性描述符是什么? ??在解释属性查找顺序之前我们需要了解Python中的属性描述符,属性描述符作为其他类对象的属性而存在,实现了特殊方法中的get.set.delete中的一种即可称作属性描述符. 其中只实现了__get__()的称作非数据描述符,实现了__get__()和__set__()方法的称作数据描述符. Data.py class Data(): def __get__(self, instance, owner): pass def __set__(self,

  sql and   Ado   笔记

 Side译:脚本        SQL 是一种与数据库程序协同工作的标准语言,这些数据库程序包括 MS Access.DB2.Informix.MS SQLServer.Oracle.MySQL.Sybase 等等. Sql 函数语句(有好多内建函数)加上SQL条件语句即可. 2. 合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 SELECT

Python高级编程 面向对象、元类、多线程、异步IO、asyncio

—— 面向对象 —— 鸭子类型抽象基类类变量.对象变量的查找顺序静态方法.类方法.实例方法数据封装和私有属性对象的自省机制上下文管理器contextlib实现上下文管理器super函数的查找顺序mixin继承模式的应用 —— asyncio并发编程 —— 事件循环协程嵌套call_soon.call_later.call_atcall_soon_threadsafeThreadPoolExecutor+asyncioasyncio 模拟 http 请求future 和 taskasyncio 同

万字长文带你成为Python老司机

万字长文带你成为Python老司机 前言: 本文主要总结项目开发中和面试中的Python高级知识点,是进阶Python高级工程师必备要点. 主要内容: No.1 一切皆对象 众所周知,Java中强调"一切皆对象",但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function)也是对象,而且Python的代码和模块也都是对象. Python中函数和类可以赋值给一个变量 Python中函数和类可以存放到集合对象中 Python中函数和

35个高级python知识点

No.1 一切皆对象 众所周知,Java中强调“一切皆对象”,但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function)也是对象,而且Python的代码和模块也都是对象. Python中函数和类可以赋值给一个变量 Python中函数和类可以存放到集合对象中 Python中函数和类可以作为一个函数的参数传递给函数 Python中函数和类可以作为返回值 Step.1 # 首先创建一个函数和一个Python3.x的新式类 class Demo

第八章python元类编程

1.property动态属性 一般对象中的属性使用单下划线或双下划线开头的都是伪私有类型,对于单下划线开头的属性(表示为protected类型)直接可以通过对象访问,而双下滑线开头的属性(表示private类型)必须使用对象.__类名__私有属性名即可访问 1 class Test: 2 def __init__(self): 3 self.__t1 = "t1" 4 self._t2 = "t2" 5 6 7 test = Test() 8 print(test.

设计模式之美:Dynamic Property(动态属性)

索引 别名 意图 结构 参与者 适用性 效果 实现 实现方式(一):Dynamic Property 的示例实现. 别名 Property Properties Property List 意图 使对象可以为客户提供广泛且可扩展的属性集合. Lets an object provides a generic and extensible set of properties to clients. 结构 参与者 Object 目标对象可存储 Property 列表. 可使用不同的类型来作为 Pro

Qt属性系统(Qt Property System)

Qt提供了巧妙的属性系统,它与某些编译器支持的属性系统相似.然而,作为平台和编译器无关的库,Qt不能够依赖于那些非标准的编译器特性,比如__property 或者 [property].Qt的解决方案能够被任何Qt支持的平台下的标准C++编译器支持.它依赖于元对象系统(Meta_Object Sytstem),元对象系统通过信号和槽提供了对象间通讯的机制. 怎样声明属性 QObject的子类的私有域中使用Q_PROPERTY宏来声明一个属性 Q_PROPERTY(type name (READ