Python tự động thêm phương thức vào đối tượng
Cách thông thường để thêm chức năng (phương thức) vào một lớp trong Python là định nghĩa các hàm trong phần thân của lớp. Có nhiều cách khác để thực hiện điều này có thể hữu ích trong các tình huống khác nhau Show Đây là cách truyền thống class A(object): def print_classname(self): print self.__class__.__name__ Phương thức cũng có thể được định nghĩa bên ngoài phạm vi của lớp. Điều này cho phép hàm “print_classname” được sử dụng như một hàm độc lập và như một phương thức của lớp def print_classname(a): print a.__class__.__name__ class A(object): print_classname = print_classname Hoặc, tương đương def print_classname(a): print a.__class__.__name__ class A(object): pass setattr(A, "print_classname", print_classname) Cũng có thể thêm phương thức vào đối tượng kiểu “A”. Tuy nhiên, bạn cần xác định rằng thuộc tính “print_classname” của đối tượng là một phương thức để đảm bảo rằng nó sẽ nhận tham chiếu đến “self” dưới dạng tham số đầu tiên ngầm định khi nó được gọi from types import MethodType def print_classname(a): print a.__class__.__name__ class A(object): pass # this assigns the method to the instance a, but not to the class definition a = A() a.print_classname = MethodType(print_classname, a, A) # this assigns the method to the class definition A.print_classname = MethodType(print_classname, None, A) Các phương thức cụ thể từ một lớp khác cũng có thể được thêm vào (không kế thừa mọi thứ khác) bằng cách thêm chức năng cơ bản của phương thức. Mặt khác, phương thức sẽ mong đợi một tham chiếu đến một thể hiện của lớp gốc dưới dạng tham số đầu tiên ngầm định class B(object): def print_classname(self): print self.__class__.__name__ # option 1 class A(object): print_classname = B.print_classname.__func__ # option 2 class A(object): pass setattr(A, "print_classname", B.print_classname.__func__)3 Bình luận « Đó là mùa B(bq)RG Chạy Matlab dưới dạng quy trình con Python » 3 phản hồi cho “Thêm phương thức vào lớp Python”
|