我的课:
class ManagementReview:
"""Class describing ManagementReview Object.
"""
# Class attributes
id = 0
Title = 'New Management Review Object'
fiscal_year = ''
region = ''
review_date = ''
date_completed = ''
prepared_by = ''
__goals = [] # List of <ManagementReviewGoals>.
__objectives = [] # List of <ManagementReviewObjetives>.
__actions = [] # List of <ManagementReviewActions>.
__deliverables = [] # List of <ManagementReviewDeliverable>.
__issues = [] # List of <ManagementReviewIssue>.
__created = ''
__created_by = ''
__modified = ''
__modified_by = ''
Run Code Online (Sandbox Code Playgroud)
__modified属性是isoformat中的日期时间字符串.我希望每次更新其他属性之一时,都会自动将该属性更新为datetime.now().isoformat().对于其他每个属性,我都有一个setter:
def setObjectives(self,objectives):
mro = ManagementReviewObjective(args)
self.__objectives.append(mro)
Run Code Online (Sandbox Code Playgroud)
那么,是否有一种比添加如下行更简单的方法:
self.__modified = datetime.now().isoformat()
Run Code Online (Sandbox Code Playgroud)
每个二传手?
谢谢!:)
要更新__modified时,实例属性(在你的例子作为被修改self.__objectives),你可以重写__setattr__.
例如,您可以将其添加到您的班级:
def __setattr__(self, name, value):
# set the value like usual and then update the modified attribute too
self.__dict__[name] = value
self.__dict__['__modified'] = datetime.now().isoformat()
Run Code Online (Sandbox Code Playgroud)