Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重构的设计模式_Python_Design Patterns_Refactoring - Fatal编程技术网

Python 重构的设计模式

Python 重构的设计模式,python,design-patterns,refactoring,Python,Design Patterns,Refactoring,我有这三个函数,我发现重复所有相同的代码很难看,这一点都不枯燥。 同时,我不确定如何重构这些函数以保持清晰的表达式。 你能推荐点什么吗 谢谢 def download_loc(instance, filename): username = instance.username_or_anonymous() slug = instance.slug filename_with_timestamp = filename_timestamped(instance, filenam

我有这三个函数,我发现重复所有相同的代码很难看,这一点都不枯燥。 同时,我不确定如何重构这些函数以保持清晰的表达式。 你能推荐点什么吗

谢谢

def download_loc(instance, filename):
    username = instance.username_or_anonymous()
    slug = instance.slug
    filename_with_timestamp = filename_timestamped(instance, filename)
    return "%s/%s/stl/%s" % (username, slug, filename_with_timestamp)

def preview_loc(instance, filename):
    username = instance.username_or_anonymous()
    slug = instance.slug
    filename_with_timestamp = filename_timestamped(instance, filename)
    return "%s/%s/preview/%s" % (username, slug, filename_with_timestamp)

def screenshot_loc(instance, filename):
    username = instance.username_or_anonymous()
    slug = instance.slug
    filename_with_timestamp = filename_timestamped(instance, filename)
    return "%s/%s/screenshot/%s" % (username, slug, filename_with_timestamp)

引入第三个函数,该函数将类型名称作为参数。就我个人而言,我只想调用这个函数,但如果它是从很多地方调用的,那么包装它是有价值的

def loc(instance, filename, typename):
    username = instance.username_or_anonymous()
    slug = instance.slug
    filename_with_timestamp = filename_timestamped(instance, filename)
    return "{}/{}/{}/{}".format(username, slug, typename, filename_with_timestamp)

def download_loc(instance, filename):
    return loc(instance, filename, "stl")

def preview_loc(instance, filename):
    return loc(instance, filename, "preview")

def screenshot_loc(instance, filename):
    return loc(instance, filename, "screenshot")

引入第三个函数,该函数将类型名称作为参数。就我个人而言,我只想调用这个函数,但如果它是从很多地方调用的,那么包装它是有价值的

def loc(instance, filename, typename):
    username = instance.username_or_anonymous()
    slug = instance.slug
    filename_with_timestamp = filename_timestamped(instance, filename)
    return "{}/{}/{}/{}".format(username, slug, typename, filename_with_timestamp)

def download_loc(instance, filename):
    return loc(instance, filename, "stl")

def preview_loc(instance, filename):
    return loc(instance, filename, "preview")

def screenshot_loc(instance, filename):
    return loc(instance, filename, "screenshot")

将类型(stl、预览和屏幕截图)设为另一个参数,并使用一个函数查看相同之处,查看不同之处,封装每个参数。将类型(stl、预览和屏幕截图)设为另一个参数,并使用一个函数查看相同之处,查看不同之处,封装每个。请注意,
%
运算符不赞成使用
str.format
。请注意,
%
运算符不赞成使用
str.format