0
這可能是一個普通的編程問題,而不是Python特定的問題,但是,驗證類的最佳做法是什麼?Python方法:返回數據vs將數據存儲在屬性中
我的第一種方法是有方法返回一個字典:
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
或者我應該使用這兩種方法,以獲得最佳兩個世界?
這兩個例子都可以正常工作,但是我想知道這是驗證類應該工作的傳統方式。對不起,如果答案太明顯,但我在這裏學習。提前致謝。
這實際上取決於你打算如何使用它。如果你要繼續使用'v',但你永遠不會再使用'v.scene_result',那麼它可能不會被視爲驗證器狀態,而是作爲'v.scene'的返回值。 – abarnert 2014-11-25 00:36:56
這可能不是這個問題的最佳論壇... – 2014-11-25 00:54:05
@Joran Beasley這個問題的適當論壇是什麼? – 2014-11-25 01:00:22