ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python面向对象之property装饰器

2021-07-13 16:32:40  阅读:160  来源: 互联网

标签:.__ obj name python self 面向对象 print property def


property装饰器

property装饰器:将一个函数功能伪装成一个数据属性
版本一:

    class Foo:
      def __init__(self, name, age):
        self.__name = name
        self.age = age

      @property
      def name(self):
          return self.__name #obj.name访问的是self.__NAME(这也是真实值的存放位置)

      @name.setter
      def name(self, v):
        if type(v) is not str:
          print("必须是str类型")
          return
        self.__name = v
      @name.deleter
      def name(self):
          print("不能删除")

    obj = People('ly', 18)
    print(obj.name)
    print(obj.get_name)
    obj.set_name('EGON')
    obj.name = 'x'
    print(obj.name)
    del  obj.name

版本二:

class People():
    __country = 'CHINA'  # _People__country
    def __init__(self, name, age):
        self.__name = name
        self.age = age
    def get_name(self):
        return self.__name

    def set_name(self, v):
        if type(v) is not str:
            print("必须是str类型")
            return
        self.__name = v

    def del_name(self):
        print("不能删除")

        # 这样写, 必须按照这个顺序
    xxx = property(get_name, set_name, del_name)

obj = People('ly', 18)
print(obj.xxx)
obj.xxx = 'EGON'
print(obj.xxx)
del  obj.xxx

标签:.__,obj,name,python,self,面向对象,print,property,def
来源: https://www.cnblogs.com/zty78/p/15006987.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有