我正在寻找任何资源,提供使用Python展示最佳实践、设计模式和SOLID原则的示例。
我正在寻找任何资源,提供使用Python展示最佳实践、设计模式和SOLID原则的示例。
这些资源有一些重叠:
另一个资源是Python示例代码库。其中很多并不遵循最佳实践,但你可以在里面找到一些有用的模式。
类型
>>> import this
在Python控制台中。
虽然这通常被视为(好笑!)玩笑,但它包含了一些有效的特定于Python的公理。
Bruce Eckel的《Python编程思想》大量借鉴了设计模式。
空对象的目标大致是为在Python中使用基本数据类型None或者在其他语言中使用Null(或Null指针)提供“智能”的替代品。它们有许多用途,包括一个除特殊元素之外的一组其他类似元素的成员。通常,这会导致条件语句以区分普通元素和基本Null值。
这个对象只是消去了缺少属性错误,您可以避免检查它们的存在性。
这不过就是:
class Null(object):
def __init__(self, *args, **kwargs):
"Ignore parameters."
return None
def __call__(self, *args, **kwargs):
"Ignore method calls."
return self
def __getattr__(self, mname):
"Ignore attribute requests."
return self
def __setattr__(self, name, value):
"Ignore attribute setting."
return self
def __delattr__(self, name):
"Ignore deleting attributes."
return self
def __repr__(self):
"Return a string representation."
return "<Null>"
def __str__(self):
"Convert to a string and return it."
return "Null"
如果你使用Null("任何", "参数", "你","想要").attribute_that_doesnt_exists()
,它就不会抛出异常错误,而是无声地变成了等同于pass
的状态。
通常,你会做类似以下的操作:
if obj.attr:
obj.attr()
通过这个,你只需要执行以下操作:
obj.attr()
并且忘记它。请注意,广泛使用Null
对象可能会潜在地隐藏您代码中的错误。
您可能还希望阅读这篇文章(选择.pdf文件),其中讨论了动态面向对象语言(即Python)中的设计模式。引用该页面的话:
本文探讨了在使用动态、高阶、面向对象编程语言解决类似问题时,“四人帮”或“GOF”书中的模式如何出现。一些模式消失了——也就是说,它们直接由语言特性支持,有些模式更简单或具有不同的重点,而有些则基本上没有改变。