发布于2019-09-11 19:44 阅读(914) 评论(0) 点赞(27) 收藏(5)
我不是python的新手,但我在这里有一个非常基本的问题。
我正在玩python,发现有type属性
>>> property
<type 'property'>
但我只听说过函数上下文中的属性。
>>> a = property()
<property object at 0x0246C090>
但是财产对象怎么样?它们有什么用?属性方法不是非常直观或暗示性的
>>> dir(a)
['__class__', '__delattr__', '__delete__', '__doc__', '__format__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__set__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'deleter', 'fdel', 'fget', 'fset', 'getter', 'setter']
谢谢你的关注!
该property
对象是什么,你实际上是想作为一个属性。考虑这个例子:
class Foo(object):
def __init__(self):
self._bar = 0
@property
def bar(self):
return self._bar + 5
Foo.bar
是一个具有__get__
方法的属性对象。当你写的东西像
x = Foo()
print(x.bar)
查找用于x.bar
认定,type(x).bar
具有__get__
方法等属性查找变得等效于
type(x).bar.__get__(x, type(x))
它产生了价值x._bar + 5
。
property
作为装饰器的使用有点模糊了bar
作为property
对象的事实。一个等价的定义是
class Foo(object):
def __init__(self):
self._bar = 0
bar = property(lambda self: self._bar + 5)
它更明确地显示您正在创建一个property
具有给定lambda
表达式的对象作为该属性的getter,并将该对象绑定到class属性bar
。
的property
类(连同实例方法,类方法和静态方法),是Python一般描述协议,该协议定义了类的行为与属性的特定的应用程序__get__
,__set__
和/或__del__
方法。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/108054/a7dcdf638cb61e24e2ec/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!