班级设计:上次修改

1 python class-design

我的课:

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)

每个二传手?

谢谢!:)

Dav*_*ill 5

要更新__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)