Python属性是否损坏?

2024-06-13 07:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这个测试用例

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)

失败如下?在

^{pr2}$

Tags: importselfgetdef测试用例valunittestclass
1条回答
网友
1楼 · 发布于 2024-06-13 07:44:18

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

如果您感兴趣,http://www.python.org/download/releases/2.2.3/descrintro/提供了一些详细信息。新样式的类在几个方面更好。在

相关问题 更多 >