怎么会是这个测试用例
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
没有继承自 object
或任何其他新式类,因此它是一个旧式类(因此不支持属性)。描述符仅适用于新型类。要修复,请将 class C()
更改为 class C(object)
。
http://www.python.org/download/releases/2.2.3/descrintro/如果您有兴趣,请提供一些详细信息。新型类(class)在几个方面更好。
关于python - Python 属性是否损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2459715/