Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các thuộc tính của lớp Python và thời điểm sử dụng chúng một cách thích hợp
Giới thiệu về thuộc tính lớp
Hãy bắt đầu với một lớp học Circle
đơn giản
Code language: Python [python]
class Circle: def __init__[self, radius]: self.pi = 3.14159 self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2*self.pi * self.radius
Lớp Circle
có hai thuộc tính
0 vàCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
1. Nó cũng có hai phương pháp tính diện tích và chu vi hình trònCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
Cả
0 vàCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
1 đều được gọi là thuộc tính thể hiện. Nói cách khác, chúng thuộc về một thể hiện cụ thể của lớp
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
Code language: Python [python]
Circle
. Nếu bạn thay đổi các thuộc tính của một phiên bản, nó sẽ không ảnh hưởng đến các phiên bản khácBên cạnh các thuộc tính thể hiện, Python cũng hỗ trợ các thuộc tính lớp. Các thuộc tính của lớp không liên kết với bất kỳ phiên bản cụ thể nào của lớp. Nhưng chúng được chia sẻ bởi tất cả các phiên bản của lớp
Nếu bạn đã từng lập trình bằng Java hoặc C#, bạn sẽ thấy rằng các thuộc tính lớp tương tự như các thành viên tĩnh, nhưng không giống nhau
Để định nghĩa một thuộc tính lớp, bạn đặt nó bên ngoài phương thức
5. Ví dụ: phần sau định nghĩaCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
0 là thuộc tính lớpCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
Code language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
Sau đó, bạn có thể truy cập thuộc tính lớp thông qua các phiên bản của lớp hoặc thông qua tên lớp
Trong các phương thức
7 vàCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
8, chúng ta truy cập thuộc tính lớpCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
0 thông qua biếnCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
0Code language: Oracle Rules Language [ruleslanguage]
object_name.class_attribute class_name.class_attribute
Bên ngoài lớp Circle
, bạn có thể truy cập thuộc tính lớp
0 thông qua một thể hiện của lớpCode language: Python [python]
class Circle: pi = 3.14159 def __init__[self, radius]: self.radius = radius def area[self]: return self.pi * self.radius**2 def circumference[self]: return 2 * self.pi * self.radius
Circle
hoặc trực tiếp thông qua lớp Circle
. Ví dụ
c = Circle[10] print[c.pi] print[Circle.pi]
Code language: Python [python]
đầu ra
Code language: Python [python]
3.14159 3.14159
Cách các thuộc tính lớp Python hoạt động
Khi bạn truy cập một thuộc tính thông qua một thể hiện của lớp, Python sẽ tìm kiếm thuộc tính đó trong danh sách thuộc tính thể hiện. Nếu danh sách thuộc tính của cá thể không có thuộc tính đó, Python tiếp tục tra cứu thuộc tính trong danh sách thuộc tính của lớp. Python trả về giá trị của thuộc tính miễn là nó tìm thấy thuộc tính trong danh sách thuộc tính thể hiện hoặc danh sách thuộc tính lớp
Tuy nhiên, nếu bạn truy cập một thuộc tính, Python sẽ trực tiếp tìm kiếm thuộc tính đó trong danh sách thuộc tính của lớp
Ví dụ sau định nghĩa một lớp
8. Tất cả các phiên bản của lớpCode language: Python [python]
c = Circle[10] print[c.pi] print[Circle.pi]
8 sẽ có chiết khấu mặc định được chỉ định bởi thuộc tính lớpCode language: Python [python]
c = Circle[10] print[c.pi] print[Circle.pi]
0Code language: Python [python]
3.14159 3.14159