python语法学习第十天--魔法方法
Posted 小帆敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python语法学习第十天--魔法方法相关的知识,希望对你有一定的参考价值。
魔法方法二!!!
属性访问:在对属性任何操作时,都会调用
有关属性
|
|
__getattr__(self, name) | 定义当用户试图获取一个不存在的属性时的行为 |
__getattribute__(self, name) | 定义当该类的属性被访问时的行为 |
__setattr__(self, name, value) | 定义当一个属性被设置时的行为 |
__delattr__(self, name) | 定义当一个属性被删除时的行为 |
__dir__(self) | 定义当 dir() 被调用时的行为 |
__get__(self, instance, owner) | 定义当描述符的值被取得时的行为 |
__set__(self, instance, value) | 定义当描述符的值被改变时的行为 |
__delete__(self, instance) | 定义当描述符的值被删除时的行为 |
在得到属性时,先调用__getattribute__(self, name)后调用__getattr__(self, name)
描述符:描述符就是将某种特殊类型的类(实现下面三个方法其中一个或多个)的实例指派给另一个类的属性
self指当前对象,instance指另一个类的实例化对象
__get__(self,instance,owner)用于访问属性,它返回属性的值
__set__(self,instance,value)将在属性分配操作中调用,不返回任何内容
_delete__(self,instance)控制删除操作,不返回任何内容
练习:摄氏度转为华氏度
class Cel:
def __init__(self,value=26.0):
self.value=value;
def __get__(self,instance,owner):
return self.value
def __set__(self,instance,value):
self.value=value
class Fah:
def __get__(self,instance,owner):
return instance.cel*10
def __set__(self,instance,value):
instance.cel=value
class Temperature:
cel=Cel()
fah=Fah()
以上是关于python语法学习第十天--魔法方法的主要内容,如果未能解决你的问题,请参考以下文章