这可能是一般的编程问题,而不是Python特定的问题,但是,验证类的最佳实践是什么?
我的第一种方法是让方法返回字典:
class Validator():
def scene(self):
# Do validations here
return {'result': True, 'data' my_data, 'external_references': my_references}
def character(self):
# Do validations here
return {'result': True, 'data' my_data, 'external_references': my_references}
# Usage
v = Validator()
scene_results = v.scene()
character_results = v.character()
if scene_results['result']:
print "Scene Validation Succesful!"
print "Data:", scene_results['data'], ", Files:", scene_results['external_references']
if character_results['result']:
print "Character Validation Succesful!"
print "Data:", character_results['data'], ", Files:", character_results['external_references']
我的第二种方法是填充类属性:
class Validator():
def __init__(self):
self.scene_result = None
self.scene_data = None
self.scene_external_references = None
self.character_result = None
self.character_data = None
self.character_external_references = None
def scene(self):
## Do validations here
self.scene_result = True
self.scene_data = my_data
self.scene_external_references = my_references
# Won't return the values
def character(self):
# Do validations here
self.scene_result = True
self.scene_data = my_data
self.scene_external_references = my_references
# Won't return the values
# Usage
v = Validator()
v.scene()
v.character()
if v.scene_result:
print "Scene Validation Succesful!"
print "Data:", v.scene_data, ", Files:", v.scene_external_references
if v.character_result:
print "Character Validation Succesful!"
print "Data:", v.character_data, ", Files:", v.character_external_references
或者我应该使用这两种方法来充分利用这两个方面吗?
这两个例子都运行正常,但是我想知道这是否是验证类应该工作的传统方式。对不起,如果答案太明显但我在这里学习。提前谢谢。
答案 0 :(得分:0)
那么, 如果有更大的数据块要返回并重用,那么我推荐第二种方法,因为在这种情况下你只是引用存储的某个地方的数据,而在第一种情况下你还必须将返回的值复制到一个新的变量中,这可能是,对于较大的值,减慢程序。第二种方法还提供了包装,它总是有利于安全性和可读性,所以我的建议听起来是:
尽可能使用课程。
我还建议为您所谈论的“验证”编写单独的测试方法,原因与之前相同。