美文网首页
Python高级特性@property理解

Python高级特性@property理解

作者: 敢梦敢当 | 来源:发表于2017-10-06 22:40 被阅读0次
  • 将方法变成属性功能
  • property代替 setter和getter, deleter方法, 类方法转为可修改属性

1 将方法变成属性功能

class Jhy(object):
    """docstring for Jhy"""
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def all(self):
        return ('a: {}, b: {}'.format(self.a, self.b))
    @property
    def all2(self):
        return('a: {}, b: {}'.format(self.a, self.b))


if __name__ == '__main__':
    jhy = Jhy('name1', 'name2')
    print(jhy.all())   #方法调用有括号
    print(jhy.all2)   #属性调用没有括号
    jhy.all2 = 11 # 这个属性赋值会报错

输出:
a: name1, b: name2
a: name1, b: name2
jhy.all2 = 11 AttributeError: can't set attribute

2 property代替 setter和getter, deleter方法, 类方法转为可修改属性

class Jhy(object):
    """docstring for Jhy"""


    @property
    def all(self):
        return self._all

    @all.setter #  设置属性修改方法 ,这里all = property(all)
    def all(self, a):
        if a != 1:
            self._all = a 
        else:
            print('Need a != 1')

    @all.deleter
    def all(self):
        del self._all
        pass





if __name__ == '__main__':
    jhy = Jhy()
    jhy.all = 11
    print(jhy.all) # 输出11
    del jhy.all
    print(jhy.all) # 报错 因为已经删除了
 输出:
11
Traceback (most recent call last):
  File "C:\Users\jhy\Desktop\Tensorflow Demo\2.py", line 36, in <module>
    print(jhy.all)
  File "C:\Users\jhy\Desktop\Tensorflow Demo\2.py", line 14, in all
    return self._all
AttributeError: 'Jhy' object has no attribute '_all

相关文章

  • Python高级特性@property理解

    将方法变成属性功能 property代替 setter和getter, deleter方法, 类方法转为可修改属性...

  • Python:特性(property)

  • python的柯里化和装饰器、闭包

    python的高级特性-装饰器有点类似java中的切面编程,要理解python的装饰器首先需要具备两个知识:柯里化...

  • Python学习(三)

    Python的高级特性 python中有很多高级特性,比起C/C++来说要简单许多,运用起来十分方便。 切片 通常...

  • Python高级特性

    切片slice取指定索引范围的操作:[0:10:2]-->意为从第一个元素到第11个元素,元素之间隔2 迭代ite...

  • python 高级特性

    1.切片对取数据很方便,如取一个list的前n个元素,没有接触到切片的,可以使用循环,但是用切片就会很简单: 也支...

  • Python高级特性

    切片 迭代 列表生成式 生成器 generator generator:按照某种算法推算出来结果,是一种一边循环一...

  • Python——高级特性

    #!/usr/bin/python # -*- coding:UTF-8 -*- __author__ = 'wx...

  • python高级特性

    python高级特性 iteration迭代 对list,tuple的遍历被称为迭代。对list实现类似Java那...

  • python高级特性

    一、列表生成器 1. 形式: [表达式 for ... in 可迭代类型 [if expression] ] 2....

网友评论

      本文标题:Python高级特性@property理解

      本文链接:https://www.haomeiwen.com/subject/ewwryxtx.html