Я просматривал какой-то код, и я заметил линию, которая привлекла мое внимание. Код похож на пример нижеЕсть ли причина для присвоения значения по умолчанию?
class MyClass:
def __init__(self):
pass
def call_me(self=''):
print(self)
Это выглядит как и любой другой класс, который я видел, однако str
в настоящее время передается в качестве значения по умолчанию для self
.
Если я распечатать self
, он ведет себя как нормальный
>>> MyClass().call_me()
<__main__.MyClass object at 0x000002A12E7CA908>
Это было давало мне покоя, и я не могу понять, почему это будет использоваться. Есть ли причина, почему пример str
будет передан в качестве значения по умолчанию для self?
Похоже, кто-то хотел, чтобы 'MyClass.call_me()' работал тоже. Не особенно хорошая идея, однако, они могли бы сделать это «classmethod». –
Если 'call_me' вызывается из самого класса, а не из экземпляра, тогда' '' 'передается как экземпляр, а вызов метода не вызывает ошибку. –