Python 为什么在dict.get中运行类init方法get?

Python 为什么在dict.get中运行类init方法get?,python,class,Python,Class,为什么两次调用init方法? get方法应该发现键a已经存在,并完全忽略默认部分。在对象作为参数传递之前,表达式将被完全计算。.get函数将忽略该参数,但该对象已在被调用方中创建。如何避免它?最简单的方法是,不要使用.get。检查key是否在dict中,如果不在dict中,则创建该对象。在将该对象作为参数传递之前,将对表达式进行完全求值。.get函数将忽略该参数,但该对象已在被调用方中创建。如何避免它?最简单的方法是,不要使用.get。检查键是否在dict中,如果不在,则创建对象。 class

为什么两次调用init方法?
get方法应该发现键a已经存在,并完全忽略默认部分。

在对象作为参数传递之前,表达式将被完全计算。
.get
函数将忽略该参数,但该对象已在被调用方中创建。如何避免它?最简单的方法是,不要使用
.get
。检查key是否在dict中,如果不在dict中,则创建该对象。在将该对象作为参数传递之前,将对表达式进行完全求值。
.get
函数将忽略该参数,但该对象已在被调用方中创建。如何避免它?最简单的方法是,不要使用
.get
。检查键是否在dict中,如果不在,则创建对象。
class Case:
    def __init__(self, name):
        print('init class instance')
        self.name = name

    def __str__(self):
        return f'Case(fn={self.name})'


d = {'a': Case('fn')}
d.get('a', Case('bbb'))