Đối với các lỗi:Thú vị 'mất chính xác 1 lập luận (2 nhất định)' Python lỗi
TypeError: takes exactly 1 argument (2 given)
Với phương pháp lớp sau đây:
def extractAll(tag):
...
và gọi đó là:
e.extractAll("th")
Lỗi này có vẻ rất kỳ quặc khi tôi đưa ra 1 đối số, phương thức này chỉ lấy 1 đối số, nhưng nó nói rằng tôi không đưa ra 1 đối số. ... Tôi biết vấn đề có thể được sửa bằng cách thêm self
vào nguyên mẫu phương pháp nhưng tôi muốn biết lý do đằng sau lỗi.
Tôi nhận được nó bởi vì hành động gọi nó qua e.
extractAll ("th") cũng vượt qua trong self
làm đối số? Và nếu vậy, bằng cách loại bỏ các self
trong cuộc gọi, tôi sẽ làm cho nó một số loại phương pháp lớp có thể được gọi là Extractor.extractAll("th")
?
nó hợp lý để có phương pháp này trong một lớp nếu tôi cần phải truy cập các lĩnh vực của lớp phải không? ... –
@ funk-shun: Phải, nhưng hơn bạn sẽ cần một 'classsmethod', không phải là một' staticmethod'. Và thông thường, tôi sẽ chỉ sử dụng một phương pháp thông thường cho loại phương pháp này. –
@ user2533809: Thông thường, tham số đầu tiên của 'classmethod' được gọi là' cls', bởi vì nó là chính lớp đó, không phải là một thể hiện của nó. –