Câu trả lời:
Các giá trị đối số mặc định được đánh giá tại thời gian xác định hàm, nhưng self
là một đối số chỉ khả dụng tại thời gian gọi hàm. Do đó, các đối số trong danh sách đối số không thể tham chiếu lẫn nhau.
Đó là một mẫu chung để mặc định một đối số None
và thêm một bài kiểm tra cho mã đó:
def p(self, b=None):
if b is None:
b = self.a
print b
Nếu bạn đã đến đây thông qua google, vui lòng đảm bảo kiểm tra xem bạn đã tự cho mình là tham số đầu tiên cho hàm lớp. Đặc biệt nếu bạn cố gắng tham chiếu các giá trị cho đối tượng đó bên trong hàm.
def foo():
print(self.bar)
> NameError: tên 'tự' không được xác định
def foo(self):
print(self.bar)