为什么python中主要使用类型/类统一
我是一个相当普通的python程序员,我以前没有用python做过非常复杂或任何主要的应用程序。。。我在阅读新的类样式时,遇到了一些非常新的东西,我理解这些东西,即数据类型和类的统一为什么python中主要使用类型/类统一,python,class,types,new-style-class,Python,Class,Types,New Style Class,我是一个相当普通的python程序员,我以前没有用python做过非常复杂或任何主要的应用程序。。。我在阅读新的类样式时,遇到了一些非常新的东西,我理解这些东西,即数据类型和类的统一 class defaultdict(dict): def __init__(self, default=None): dict.__init__(self) self.default = default def __getitem__(self, key):
class defaultdict(dict):
def __init__(self, default=None):
dict.__init__(self)
self.default = default
def __getitem__(self, key):
try:
return dict.__getitem__(self, key)
except KeyError:
return self.default
但真正让我困惑的是他们为什么要统一他们。。。我实在想不出有什么理由使它如此重要。。如果有人能解释一下,我会很高兴的。谢谢你。主要原因是允许以用户创建类的方式对内置类型进行子类化。在创建新样式的类之前,要创建类似dict的类,您需要从专门设计的UserDict类中生成子类,或者生成一个提供完整dict协议的自定义类。现在,您只需执行类mySpecialDict:并重写要修改的方法 有关详细信息,请参阅 例如,下面是一个dict子类,它记录对它的修改:
def log(msg):
...
class LoggingDict(dict):
def __setitem__(self, key, value):
super(LoggingDict, self).__setitem__(key, value)
log('Updated: {}={}'.format(key, value))
LoggingDict的任何实例都可以在需要常规dict的地方使用:
def add_value_to_dict(d, key, value):
d[key] = value
logging_dict = LoggingDict()
add_value_to_dict(logging_dict, 'testkey', 'testvalue')
如果您使用函数而不是LoggingDict:
您如何通过mydict向dict添加值,并让它记录添加,而不必让add-value向dict了解log-value?您所说的统一是什么意思?如单位。。。例如,创建用户定义的数据类型有什么好处@user3271483:有哪些替代方案?@Blender要做什么,请给我一个需要用户定义类型的任务的示例?@user3271483:如果不将dict子类化,您将如何定义defaultdict?这对您有多大帮助,先生?您不需要传递它来向dict添加值。。做了我的口述。。。然后log\u valuemydict,'testkey','testvalue'对不起,log\u value不应该做加法,因为它只是一个记录器。问题仍然存在:如何记录一个单独函数对dict的添加?为什么这两个函数彼此不认识。。。因为您已经在代码中回答了这个问题?这不是一个了解松耦合好处的地方。你要求回答,结果得到了。如果你不需要使用它,不要。否则,你就会陷入迂腐或低沉的状态。
def log_value(d, key, value):
log('Updated: {}={}'.format(key, value))
mydict = dict()