Thành viên dữ liệu của một lớp python là gì?

Các ngôn ngữ hướng đối tượng cổ điển, chẳng hạn như C ++ và Java, kiểm soát quyền truy cập vào tài nguyên lớp bằng các từ khóa công khai, riêng tư và được bảo vệ. Các thành viên private của lớp bị từ chối truy cập từ môi trường bên ngoài lớp. Chúng chỉ có thể được xử lý từ bên trong lớp

Thành viên công cộng

Các thành viên công khai [thường là các phương thức được khai báo trong một lớp] có thể truy cập được từ bên ngoài lớp. Đối tượng của cùng một lớp được yêu cầu để gọi một phương thức công khai. Sự sắp xếp các biến cá thể riêng và phương thức công khai này đảm bảo nguyên tắc đóng gói dữ liệu

Tất cả các thành viên trong lớp Python được mặc định là công khai. Bất kỳ thành viên nào cũng có thể được truy cập từ bên ngoài môi trường lớp học

Thí dụ. Thuộc tính công cộng

Sao chép

class Student:
    schoolName = 'XYZ School' # class attribute

    def __init__[self, name, age]:
        self.name=name # instance attribute
        self.age=age # instance attribute

Bạn có thể truy cập các thuộc tính của lớp

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
8 và cũng có thể sửa đổi các giá trị của chúng, như được hiển thị bên dưới

Thí dụ. Truy cập thành viên công khai

Sao chép

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20

Thành viên được bảo vệ

Các thành viên được bảo vệ của một lớp có thể truy cập từ bên trong lớp và cũng có sẵn cho các lớp con của nó. Không có môi trường nào khác được phép truy cập vào nó. Điều này cho phép các tài nguyên cụ thể của lớp cha được kế thừa bởi lớp con

Quy ước của Python để tạo một biến thể hiện được bảo vệ là thêm tiền tố _ [dấu gạch dưới đơn] vào nó. Điều này có hiệu quả ngăn không cho nó bị truy cập trừ khi nó nằm trong một lớp con

Thí dụ. Thuộc tính được bảo vệ

Sao chép

class Student:
    _schoolName = 'XYZ School' # protected class attribute
    
    def __init__[self, name, age]:
        self._name=name  # protected instance attribute
        self._age=age # protected instance attribute

Trên thực tế, điều này không ngăn các biến đối tượng truy cập hoặc sửa đổi đối tượng. Bạn vẫn có thể thực hiện các thao tác sau

Thí dụ. Truy cập các thành viên được bảo vệ

Sao chép

>>> std = Student["Swati", 25]
>>> std._name
'Swati'
>>> std._name = 'Dipa'
>>> std._name
'Dipa'

Tuy nhiên, bạn có thể định nghĩa một thuộc tính bằng cách sử dụng trình trang trí thuộc tính và làm cho nó được bảo vệ, như minh họa bên dưới

Thí dụ. Thuộc tính được bảo vệ

Sao chép

class Student:
	def __init__[self,name]:
		self._name = name
	@property
	def name[self]:
		return self._name
	@name.setter
	def name[self,newname]:
		self._name = newname

Ở trên, trình trang trí @property được sử dụng để biến phương thức

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
0 thành thuộc tính và trình trang trí
>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
1 cho các quá tải khác của phương thức
>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
0 làm phương thức thiết lập thuộc tính. Bây giờ,
>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
3 đã được bảo vệ

Thí dụ. Truy cập các thành viên được bảo vệ

Sao chép

>>> std = Student["Swati"]
>>> std.name
'Swati'
>>> std.name = 'Dipa'
>>> std.name
'Dipa'
>>> std._name # still accessible

Ở trên, chúng tôi đã sử dụng thuộc tính

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
4 để sửa đổi thuộc tính
>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
3. Tuy nhiên, nó vẫn có thể truy cập được bằng Python. Do đó, lập trình viên có trách nhiệm sẽ không truy cập và sửa đổi các biến thể hiện có tiền tố là
>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
6 từ bên ngoài lớp của nó

Thành viên riêng tư

Python không có bất kỳ cơ chế nào hạn chế hiệu quả quyền truy cập vào bất kỳ biến thể hiện hoặc phương thức nào. Python quy định một quy ước về tiền tố tên của biến/phương thức với một dấu gạch dưới đơn hoặc kép để mô phỏng hành vi của các chỉ định truy cập được bảo vệ và riêng tư

Dấu gạch dưới kép

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
7 trước một biến làm cho nó ở chế độ riêng tư. Nó đưa ra một gợi ý mạnh mẽ là không chạm vào nó từ bên ngoài lớp học. Bất kỳ nỗ lực nào để làm như vậy sẽ dẫn đến AttributeError

Thí dụ. Thuộc tính riêng tư

Sao chép

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
4

Thí dụ

Sao chép

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
5

Python thực hiện xáo trộn tên của các biến riêng tư. Mọi thành viên có dấu gạch dưới kép sẽ được đổi thành

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
8. Vì vậy, nó vẫn có thể được truy cập từ bên ngoài lớp học, nhưng việc thực hành nên được hạn chế

Thí dụ

Sao chép

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
7

Do đó, Python cung cấp triển khai khái niệm của các công cụ sửa đổi truy cập công khai, được bảo vệ và riêng tư, nhưng không giống như các ngôn ngữ khác như C#, Java, C++

Các thành viên của một lớp là gì?

Các thành viên của một lớp bao gồm tất cả các thành viên được khai báo trong lớp, cùng với tất cả các thành viên [ngoại trừ hàm tạo và trình kết thúc] được khai báo trong tất cả các lớp trong hệ thống phân cấp thừa kế của nó. Private members in base classes are inherited but are not accessible from derived classes. Fields are variables declared at class scope.

Việc sử dụng các thành viên dữ liệu trong một lớp là gì?

Một lớp là kiểu dữ liệu do người dùng định nghĩa có các thành viên dữ liệu và các hàm thành viên. Các thành viên dữ liệu là các biến dữ liệu và các hàm thành viên là các hàm được sử dụng để thao tác với các biến này và các thành viên dữ liệu này cùng với các hàm thành viên xác định các thuộc tính và hành vi của .

Thành viên dữ liệu trong lớp và đối tượng là gì?

Dữ liệu thành viên -- dữ liệu mô tả đối tượng . Các chức năng thành viên -- các khía cạnh hành vi của đối tượng [các chức năng liên quan đến chính đối tượng đó] Lớp -- một kế hoạch chi tiết cho các đối tượng. Một lớp là một loại do người dùng định nghĩa mô tả một loại đối tượng nhất định sẽ trông như thế nào.

Các mục dữ liệu trong một lớp được gọi là gì?

Thành viên đề cập đến các mục dữ liệu và chức năng có trong một lớp/đối tượng. Các phương thức đề cập đến các chức năng có trong một lớp/đối tượng.

Chủ Đề