zoukankan      html  css  js  c++  java
  • python中property和setter装饰器

    property和setter装饰器

      作用:调用方法改为调用对象, 比如 : p.set_name()     改为   p.set_name

           区别:  前者改变get方法,后者改变set方法

      效果图:
      

      代码:

    class Person:
        def __init__(self,name):
            self._name = name
    
        def get_name(self):
            return self._name
    
        def set_name(self,name):
            self._name = name
    
    p = Person('小黑')
    print(p.get_name())
    p.set_name('小灰')
    print(p.get_name())
    class Person:
        def __init__(self,name):
            self._name = name
    
        # 利用property装饰器将获取name方法转换为获取对象的属性
        @property
        def get_name(self):
            return self._name
    
        # 利用property装饰器将设置name方法转换为获取对象的属性
        @get_name.setter
        def set_name(self,name):
            self._name = name
    
    
    p = Person('小黑')
    print(p.get_name)   # 原 p.get_name()  , 现 p.get_name
    p.set_name = '小灰' # 原 p.set_name('小灰')  ,现 p.set_name = '小灰'
    print(p.get_name)

    标准写法:

      效果图:

      代码:

    # property装饰器
    # 作用: 将一个get方法转换为对象的属性。 就是 调用方法改为调用对象
    # 使用条件: 必须和属性名一样
    
    # setter方法的装饰器:
    # 作用:将一个set方法转换为对象的属性。 就是 a调用方法改为调用对象
    # 使用方法:@属性名.setter
    
    class Person:
        def __init__(self,name):
            self._name = name
    
        # 利用property装饰器将获取name方法转换为获取对象的属性
        @property
        def name(self):
            return self._name
    
        # 利用property装饰器将设置name方法转换为获取对象的属性
        @name.setter
        def name(self,name):
            self._name = name
    
    
    p = Person('小黑')
    print(p.name)   # 原获取 p.name()  , 现 p.name
    p.name = '小灰'  # 原设置 p.name('小灰')  ,现 p.name = '小灰'
    print(p.name)
  • 相关阅读:
    创业失败的七个原因及解决之道
    技术人员如何参与产品设计讨论:激活那一潭死水
    基于Android Studio搭建hello world工程
    WINCE6.0+IMX515通过cfimager.exe烧录镜像文件
    基于Android Studio搭建Android应用开发环境
    WinCE启动失败的原因与解决办法分析
    Maximum Allowed Error 7 错误解决
    s3c6410 开发板Linux系统支持 K9GAG08U0E的方法
    Nandflash 驱动移植
    GIFT-EMS礼记----青软S2SH(笔记)
  • 原文地址:https://www.cnblogs.com/FlyingLiao/p/11334097.html
Copyright © 2011-2022 走看看