Tôi tìm thấy điều này method chaining in python, nhưng ngay cả với nó tôi không thể hiểu được phương pháp chuỗi trong Python.Phương pháp cơ bản chaining
Ở đây, các mục tiêu là hai: giải quyết vấn đề mã hóa và hiểu chuỗi phương pháp (với điều kiện tôi vẫn không tự tin 100% với các cuộc gọi).
Xuống định nghĩa sự cố.
Tôi muốn một lớp học có hai phương pháp: một bộ tham số của đối tượng = 'dòng' và một ghi đè khác vào 'thanh'.
Đây là những gì tôi có cho đến nay:
class foo():
def __init__(self, kind=None):
self.kind = kind
def __call__(self, kind=None):
return foo(kind=kind)
def my_print(self):
print (self.kind)
def line(self):
return self(kind='line')
def bar(self):
return self(kind='bar')
Đáng buồn thay, với mã này tôi có thể đạt được mục tiêu của tôi làm điều này
a = foo()
a.bar().line().bar().bar().line().my_print()
Nhưng tôi muốn để có được những kết quả tương tự bằng cách viết này mã
a = foo()
a.bar.line.bar.bar.line.my_print()
Làm cách nào để đạt được điều này? Tôi đoán là một cái gì đó sai trong cách tôi xác định phương pháp __call__
. Cảm ơn trước sự giúp đỡ của bạn.
Cảm ơn câu trả lời rất đầy đủ !! – Pezze