码迷,mamicode.com
首页 > 编程语言 > 详细

python语法学习第十天--魔法方法

时间:2019-11-04 00:04:03      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:attribute   color   分配   特殊   font   center   实例化   body   有关   

魔法方法二!!!

属性访问:在对属性任何操作时,都会调用

 
有关属性
__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语法学习第十天--魔法方法

标签:attribute   color   分配   特殊   font   center   实例化   body   有关   

原文地址:https://www.cnblogs.com/code-fun/p/11789257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!