加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python属性未设置

发布时间:2020-12-16 23:35:08 所属栏目:Python 来源:网络整理
导读:这是代码: def Property(func): return property(**func())class A: def __init__(self,name): self._name = name @Property def name(): doc = 'A''s name' def fget(self): return self._name def fset(self,val): self._name = val fdel = None print lo
这是代码:
def Property(func):
     return property(**func())

class A:
     def __init__(self,name):
          self._name = name

     @Property
     def name():
          doc = 'A''s name'

          def fget(self):
               return self._name

          def fset(self,val):
               self._name = val

          fdel = None

          print locals()
          return locals()

a = A('John')
print a.name
print a._name
a.name = 'Bob'
print a.name
print a._name

以上产生以下输出:

{'doc': 'As name','fset': <function fset at 0x10b68e578>,'fdel': None,'fget': <function fget at 0x10b68ec08>}
John
John
Bob
John

代码取from here.

问题:怎么了?它应该是简单的东西,但我找不到它.

注意:我需要属性来进行复杂的获取/设置,而不是简单地隐藏属性.

提前致谢.

解决方法

documentation for property()声明:

Return a property attribute for new-style classes (classes that derive from object).

您的类不是新样式的类(您没有从对象继承).将类声明更改为:

class A(object):
    ...

它应该按预期工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读