Hướng dẫn what is public and private data member in python? - thành viên dữ liệu công khai và riêng tư trong 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 tư nhân 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ừ trong lớp.

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

Các thành viên công cộng [nói chung các phương thức được khai báo trong một lớp] có thể truy cập 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 này của các biến thể hiện riêng và các phương thức công khai đảm bảo nguyên tắc đóng gói dữ liệu.

Tất cả các thành viên trong một lớp Python được công khai theo mặc định. Bất kỳ thành viên có thể được truy cập từ bên ngoài môi trường lớp học.public by default. Any member can be accessed from outside the class environment.

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 Student và cũng sửa đổi các giá trị của chúng, như được hiển thị bên dưới.

>>> 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ừ 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 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.

Công ước của Python để tạo một biến thể được bảo vệ là thêm tiền tố _ [một lần gạch dưới] cho nó. Điều này có hiệu quả ngăn chặn nó được truy cập trừ khi nó ở trong một lớp con.protected is to add a prefix _ [single underscore] to it. This effectively prevents it from being accessed unless it is from within a sub-class.

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 thể hiện truy cập hoặc sửa đổi phiên bản. Bạn vẫn có thể thực hiện các hoạt động sau:

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

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

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, @Property Decorator được sử dụng để tạo phương thức

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
0 làm 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 thành một 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 Setter 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ệ.

>>> 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 trong 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ố với
>>> 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 tư nhân

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 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 một hoặc kép để mô phỏng hành vi của các nhà xác định truy cập được bảo vệ và riêng tư.

Double nhấn mạnh

>>> std = Student["Steve", 25]
>>> std.schoolName
'XYZ School'
>>> std.name
'Steve'
>>> std.age = 20
>>> std.age
20
7 tiền tố cho một biến làm cho nó riêng tư. Nó đưa ra một gợi ý mạnh mẽ không chạm vào nó từ bên ngoài lớp. Bất kỳ nỗ lực nào để làm như vậy sẽ dẫn đến một thuộc tính horror:private. It gives a strong suggestion not to touch it from outside the class. Any attempt to do so will result in an AttributeError:

class Student:
    __schoolName = 'XYZ School' # private class attribute

    def __init__[self, name, age]:
        self.__name=name  # private instance attribute
        self.__salary=age # private instance attribute
    def __display[self]:  # private method
	    print['This is private method.']

>>> std = Student["Bill", 25]
>>> std.__schoolName
AttributeError: 'Student' object has no attribute '__schoolName'
>>> std.__name
AttributeError: 'Student' object has no attribute '__name'
>>> std.__display[]
AttributeError: 'Student' object has no attribute '__display'

Python thực hiện tên xáo trộn các biến riêng tư. Mỗi thành viên có dấu gạch dưới kép sẽ được thay đổ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, nhưng thực tế nên được kiềm chế.

>>> std = Student["Bill", 25]
>>> std._Student__name
'Bill'
>>> std._Student__name = 'Steve'
>>> std._Student__name
'Steve'
>>> std._Student__display[]
'This is private method.'

Do đó, Python cung cấp việc thực hiện khái niệm cá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ông khai và riêng tư ở Python là gì?

Thành viên công cộng:- Theo quy ước của Python, bất kỳ biến nào không chứa dấu gạch dưới gấp đôi vì tiền tố là biến thành viên công cộng. Bất kỳ thành viên có thể được truy cập từ bên ngoài môi trường lớp học. Biến riêng:- Biến riêng có nghĩa là bạn chỉ có thể sử dụng chúng bên trong lớp.any variable which doesn't contains double underscore as prefix is public member variable. Any member can be accessed from outside the class environment. Private variable:- Private variables means you can use them only inside the class.

Thành viên tư nhân trong Python là gì?

Python - thành viên công cộng, được bảo vệ, tư nhân.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 tư nhân 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ừ trong lớp.denied access from the environment outside the class. They can be handled only from within the class.

Dữ liệu riêng tư trong Python là gì?

Trong các thuật ngữ thực tế [thực tế], Python không có bất cứ thứ gì gọi là biến thành viên tư nhân trong Python.Tuy nhiên, việc thêm hai điểm nhấn [__] lúc đầu tạo ra một biến hoặc một phương thức riêng tư là quy ước được sử dụng bởi hầu hết các mã Python.adding two underlines[__] at the beginning makes a variable or a method private is the convention used by most python code.

Các thuộc tính công khai và riêng tư của một lớp trong Python là gì?

Python không có thuộc tính công cộng hoặc riêng tư.Tất cả các thuộc tính có thể truy cập được cho tất cả các mã.Phương pháp của bạn không theo bất kỳ cách nào làm cho _Attr riêng tư, nó chỉ là một chút che giấu.. All attributes are accessible to all code. Your method isn't in any way making _attr private, it's just a bit of obfuscation.

Bài Viết Liên Quan

Chủ Đề