• Python ---- 属性装饰器


    property源码帮助

    """
    Typical use is to define a managed attribute x:
            
            class C(object):
                def getx(self): return self._x
                def setx(self, value): self._x = value
                def delx(self): del self._x
                x = property(getx, setx, delx, "I'm the 'x' property.")
            
            Decorators make defining new properties or modifying existing ones easy:
            
            class C(object):
                @property
                def x(self):
                    "I am the 'x' property."
                    return self._x
                @x.setter
                def x(self, value):
                    self._x = value
                @x.deleter
                def x(self):
                    del self._x
    """
    class Person:
        def __init__(self, chinese, english, history):
            self._chinese = chinese
            self._eng = english
            self.__his = history
    
        def getscore(self):
            return (self._chinese, self._eng, self.__his)
    
        def gethis(self): # getter 可读
            return self.__his
    
        def sethis(self, value): # setter 可写
            self.__his = value
    
        def geteng(self):  # 只读属性
            return self._eng
    
        @property # 将下面方法变成类型属性那样可以直接访问他,根据property源码中帮助着写
        def chinese(self):
            return self._chinese
        
        @chinese.setter # 将下面方法中的属性进行修改
        def chinese(self,value):
            self._chinese = value
        
        @chinese.deleter
        def chinese(self):
            #del self._chinese
            print('del chinese')
    
    student1 = Person(80, 90, 88)
    # print(student1.gethis())
    print(student1.chinese)
    # 将方法当做属性应用
    student1.chinese = 100 
    print(student1.chinese)
    del student1.chinese
    
    #+++++++++++++++++++++++++优雅
    class Person:
        def __init__(self, chinese, english, history):
            self._chinese = chinese
            self._eng = english
            self.__his = history
    
        def getscore(self):
            return (self._chinese, self._eng, self.__his)
    
        def gethis(self): # getter 可读
            return self.__his
    
        def sethis(self, value): # setter 可写
            self.__his = value
    
        def geteng(self):  # 只读属性
            return self._eng
    
        @property # 将下面方法变成类型属性那样可以直接访问他,根据property源码中帮助着写
        def chinese(self):
            return self._chinese
        
        @chinese.setter # 将下面方法中的属性进行修改
        def chinese(self,value):
            self._chinese = value
        
        @chinese.deleter
        def chinese(self):
            #del self._chinese
            print('del chinese')
    
        eng = property(lambda self:self._eng, seteng)
        
    student1 = Person(80, 90, 88)
    # print(student1.gethis())
    print(student1.chinese)
    # 将方法当做属性应用
    student1.chinese = 100 
    print(student1.chinese)
    print(student1.eng)
    student1._eng = 200
    print(student1.eng)
  • 相关阅读:
    HDOJ1269 迷宫城堡
    最长公共子序列 nyoj36
    HDU1081 To The Max 求子矩阵最大和
    nyoj20 吝啬的国度
    景观分析工具:arcgis中patch analysis模块
    景观格局动态变化分析方法(基于ArcGIS、Fragstats、ENVI、ERDAS、Patch Analysis for ArcGIS) (20110315 08:07:03)
    从C#到Python —— 谈谈我学习Python一周来的体会
    如何判定多边形是顺时针还是逆时针
    超新星与暗能量的发现--今年诺贝尔物理奖工作的介绍(转)
    怎样把扫描好的身份证打印出实际大小
  • 原文地址:https://www.cnblogs.com/k-free-bolg/p/14469195.html
Copyright © 2020-2023  润新知