假设我们有一个表示盒的类:好的设计为参数,涉及到单个配置
class Box:
pass
它的构造可以采取一些参数,其表示对象,例如长度,宽度和高度:
class Box:
def __init__(self, length, width, height):
self.length = length
self.width = width
self.height = height
现在,我想补充的可能性增加阴影的框,但它必须是可选的,假设阴影可以shadowcolor
和shadowstrength
描述。有3种方式如何添加参数描述阴影的构造器:
class Box:
def __init__(self, ..., drop_shadow=False, shadowcolor=None, shadowstrength=None):
if drop_shadow:
pass
这是最明确的方式,但drop_shadow
这里是有点多余,因为我们可以只检查是否shadowcolor
和shadowstrength
不None
和将阴影设置为框:
class Box:
def __init__(self, ..., shadowcolor=None, shadowstrength=None):
if shadowcolor and shadowstrength:
pass
我们放弃了一个冗余参数,但现在添加阴影的可能性更加隐含。
另一种方法是有一个参数 - shadow
那就是2个参数的元组,其中第一个是shadowcolor
,另一个是shadowstrength
:
class Box:
def __init__(self, ..., shadow=None):
self.shadowcolor = shadow[0]
self.shadowstrength = shadow[1]
现在我们有一个说法,但含蓄程度甚至更高。
我非常关心这个,因为这将被用在开源包中,并且我想尽可能地使用一个类。
你会如何推荐处理这种“in-constructor”配置的另一个对象?
这上面的代码可能是[代码审查](https://codereview.stackexchange.com/)一个更好的问题。 – cole
你有python3吗? – shockawave123
@ shockawave123是的 – pythad