zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    hdu1848(sg函数打表)
    hdu1850(nim博弈)
    hdu1847(sg函数&yy)
    hdu2147(yy)
    poj2133(sg函数)
    Educational Codeforces Round 18D(完全二叉树中序遍历&lowbit)
    atcoder057D(组合数模板)
    euler证明
    04_过滤器Filter_04_Filter生命周期
    04_过滤器Filter_03_多个Filter的执行顺序
  • 原文地址:https://www.cnblogs.com/code-fun/p/11789257.html
Copyright © 2011-2022 走看看