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

Python属性是否已损坏?

发布时间:2020-12-20 12:25:45 所属栏目:Python 来源:网络整理
导读:怎么可能是这个测试用例 import unittestclass PropTest(unittest.TestCase): def test(self): class C(): val = 'initial val' def get_p(self): return self.val def set_p(self,prop): if prop == 'legal val': self.val = prop prop=property(fget=get_p
怎么可能是这个测试用例

import unittest

class PropTest(unittest.TestCase):
    def test(self):
        class C():
            val = 'initial val'

            def get_p(self):
                return self.val

            def set_p(self,prop):
                if prop == 'legal val':
                    self.val = prop

            prop=property(fget=get_p,fset=set_p)

        c=C()
        self.assertEqual('initial val',c.prop)

        c.prop='legal val'
        self.assertEqual('legal val',c.prop)

        c.prop='illegal val'
        self.assertNotEqual('illegal val',c.prop)

失败如下?

Failure
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py",line 279,in run
    testMethod()
  File "/Users/jacob/aau/admissions_proj/admissions/plain_old_unit_tests.py",line 24,in test
    self.assertNotEqual('illegal val',c.prop)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py",line 358,in failIfEqual
    (msg or '%r == %r' % (first,second))
AssertionError: 'illegal val' == 'illegal val'

解决方法

您的类C不从对象或任何其他新样式类继承,因此它是旧式类(因此不支持属性).描述符仅适用于新式类.要修复,请将类C()更改为类C(对象).

如果您有兴趣,http://www.python.org/download/releases/2.2.3/descrintro/会提供一些细节.新风格的课程在几个方面更好.

(编辑:李大同)

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

    推荐文章
      热点阅读