Tôi đã duyệt qua một số mã và tôi nhận thấy một dòng thu hút sự chú ý của tôi. Mã này cũng tương tự như ví dụ dưới đâyCó lý do nào để tự cung cấp giá trị mặc định không?
class MyClass:
def __init__(self):
pass
def call_me(self=''):
print(self)
này trông giống như bất kỳ lớp khác mà tôi đã thấy, tuy nhiên một str
đã được thông qua tại như giá trị mặc định cho self
.
Nếu tôi in ra self
, nó cư xử như bình thường
>>> MyClass().call_me()
<__main__.MyClass object at 0x000002A12E7CA908>
này đã được bugging tôi và tôi không thể tìm ra lý do tại sao điều này sẽ được sử dụng. Có bất kỳ lý do gì để giải thích tại sao một phiên bản str
sẽ được chuyển thành một giá trị mặc định cho self?
Có vẻ như có ai đó muốn có 'MyClass.call_me()' hoạt động. Không phải là một ý tưởng đặc biệt tốt, tuy nhiên, họ có thể đã làm cho nó một 'classmethod' thay thế. –
Nếu 'call_me' được gọi từ chính lớp đó và không phải từ một cá thể, thì' '' 'được truyền như thể hiện, và cuộc gọi phương thức sẽ không gây ra lỗi. –