python 之魔法方法
2024-09-05 08:19:10
描述符就是将某种特殊类型的类的实例指派给另一个类的属性
例如下面的示例
class MyDecriptor():
def get(self,instance,owner):
print("getting...",self,instance,owner)
def __set__(self,instance,value):
print("setting...",self,instance,value)
def __delete__(self,instance):
print("delete...",self,instance)
class Test():
x = MyDecriptor()//就是把MyDecriptor的实例指派给了Test类的属性x
porperty 的原理
class MyPorperty():
def init(self,fget,fset,fdel):#fget,fset,fdel都是函数
self.fget = fget
self.fset = fset
self.fdel = fdel
def __get__(self,instance,owner):
return self.fget(instance)
def __set__(self,instance,value):
self.fset(instance,value)
def __deleted__(self,instance):
self.fdel(instance)
class C():
def init(self):
self._x = None
def getX(self):
return self._x
def setX(self,value):
self._x = value
def delX(self):
del self._x
x = MyPorperty(getX,setX,delX)//getX对应的函数是fget,setX对应的函数是fset,delX对应的函是fdel
例子 摄氏温度和华氏温度的转变
class Celsius():
def init(self,value = 26.0):
self.value = float(value)
def __get__(self,instance,owner):
return self.value
def __set__(self,instance,value):
self.value = float(value)
class Fahrenheit():
def get(self,instance,owner):#摄氏度转换成华氏度
return instance.cel * 1.8 + 32
def __set__(self,instance,value):#华氏度转换成摄氏度
instance.cel = (float(value) - 32) / 1.8
class Temperature():
cel = Celsius()
fah = Fahrenheit()
最新文章
- C#获得网络连接信息 IPGlobalProperties
- 全栈开发必备的10款 Sublime Text 插件
- 八、Linux下的网络服务器模型
- HDU 5268 ZYB loves Score (简单模拟,水)
- 如何用C++语言编程(How to program in C++)
- $.cookie is not a function
- JavaWeb学习—Servlet
- route-over VS mesh-under
- 核心C#
- C# API 大全
- Top 10 JavaScript编辑器,你在用哪个?
- jQuery选择器(表单元素过滤选择器)第八节
- 为label或者textView添加placeHolder
- Scala Option类型
- SQL SERVER数据库修改是否区分大小写(转载)
- weblogic获取应用目录路径(war包)
- 吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!
- mysql排序索引优化
- tomcat配置文件context.xml和server.xml分析
- easyui的select使用
热门文章
- Springboot项目关闭Httpclient的Debug日志
- pe头
- springboot的@Configuration文件读取static静态文件
- xgboost 特征重要性计算
- codeforces#1108E2. Array and Segments (线段树+扫描线)
- 在docker容器中python3.5环境下使用DIGITS训练caffe模型
- JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一
- Spring AOP潜入易懂的讲解
- Leetcode题目155.最小栈(简单)
- 第二届强网杯部分题writeup