Trường công khai trong Python là gì?

Tuy nhiên, không có từ khóa nào được gọi là công khai, riêng tư và được bảo vệ trong Python. Do đó, chúng ta phải sử dụng một số quy ước nhất định để hạn chế các thành viên

Không có gì khó chịu, chúng ta hãy đi sâu vào tìm hiểu thêm về các công cụ sửa đổi

? Public Attribute In Python

ví dụ 1

class Music:
    # Creating a constructor
    def __init__[self]:
        self.genre = "Pop"
        self.singer = "Coldplay"
        # These are public attributes

    # Creating a function
    def foo[self]:
        song = 'Hymn For The Weekend'
        return song


# Creating object of the class
m = Music[]

# Accessing the members inside the class
print["Song: ", m.foo[]]
print["Genre:", m.genre]
print["Singer:", m.singer]

đầu ra

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay

?Ghi chú. Ngay cả lớp dẫn xuất cũng có thể truy cập các thành viên công khai

ví dụ 2

? Private Attributes in Python

Thật không may, Python không có cách hạn chế hiệu quả quyền truy cập vào các biến hoặc phương thức đối tượng. ?

Tuy nhiên, chúng tôi có một cách giải quyết. Để khai báo một thành viên là riêng tư trong Python, bạn phải sử dụng dấu gạch dưới kép

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
0 làm tiền tố cho các biến. Các thành viên riêng tư bị hạn chế trong cùng một lớp, tôi. e. chúng ta chỉ có thể truy cập các thành viên riêng tư trong cùng một lớp

Thí dụ

class Music:
    # constructor
    def __init__[self]:
        # These are private variables
        self.__genre = "Pop"
        self.__singer = "Coldplay"

    # private function
    def __func[self]:
        print['Music: Hym For The Weekend']

    def foo[self]:
        # Accessing private members of the class
        obj.__func[]
        print["Genre:", obj.__genre]
        print["Singer:", obj.__singer]


obj = Music[]  # Creating an object of the Music class
obj.foo[]  # calling the private function

đầu ra

Music: Hym For The Weekend
Genre: Pop
Singer: Coldplay

Giải trình

Trong ví dụ trên, chúng tôi đã sử dụng hai dấu gạch dưới trước các mã định danh

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
1 và
Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
2] để đặt các biến ở chế độ riêng tư. Tương tự, quy ước tương tự đã được sử dụng cho hàm
Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
3 để đảm bảo rằng đó là một phương thức riêng tư

☠️  THẬN TRỌNG

Nếu bạn cố gắng truy cập thành viên riêng bên ngoài lớp học, bạn sẽ nhận được Lỗi thuộc tính .

Thí dụ

________số 8

đầu ra

Traceback [most recent call last]:
  File "main.py", line 24, in 
    obj.__func[]
AttributeError: 'Music' object has no attribute '__func'

Vì vậy, điều này đưa chúng ta đến câu hỏi – Làm cách nào để truy cập các thuộc tính riêng tư từ bên ngoài lớp?

Khi bạn sử dụng dấu gạch dưới kép [e. g. , 

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
4], Python đùa giỡn với cái tên đặt cho nó các thuộc tính của một thuộc tính riêng tư. Tuy nhiên, biến vẫn có thể được truy cập từ bên ngoài lớp bằng cách sử dụng tên khó hiểu của nó. Do đó, nó không hoàn toàn riêng tư

Điều này đưa chúng ta đến một khái niệm rất quan trọng trong Python – Name Mangling. Bạn có thể truy cập các thuộc tính riêng tư bên ngoài lớp bằng cách sử dụng xáo trộn tên

Xáo trộn tên bằng Python

Name Mangling là một quá trình trong Python, trong đó, nếu một phương thức, trong bất kỳ trường hợp nào, có hai dấu gạch dưới trước tên và nhiều nhất một dấu gạch dưới sau tên, thì nó sẽ được thay thế bằng

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
5 trước nó, chẳng hạn,
Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
6 trở thành
Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
7. Vì tên được thay đổi bên trong bởi trình thông dịch nên chúng ta không thể truy cập biến bằng cách sử dụng tên gốc của nó và đó là cách bạn có thể ẩn dữ liệu trong Python

Ghi chú. Mangling tên về cơ bản được sử dụng để tránh ghi đè các phương thức cho các lớp cha bởi các lớp kế thừa.  

Hãy xem một ví dụ để hiểu cách các biến riêng tư được truy cập bên ngoài lớp với sự trợ giúp của xáo trộn tên

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
4

đầu ra

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
5

? Protected Attributes in Python

Bạn có thể truy cập các thuộc tính được bảo vệ của một lớp từ bên trong lớp và chúng cũng có thể được truy cập bởi các lớp con. Điều này tạo điều kiện thuận lợi cho việc kế thừa trong Python

Để tạo một biến được bảo vệ, bạn phải thêm một dấu gạch dưới [e. g.

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
8] làm tiền tố cho nó. Để làm cho nó thực sự được bảo vệ, bạn cũng phải sử dụng một thuộc tính trang trí

Thí dụ

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
7

đầu ra

Song:  Hymn For The Weekend
Genre: Pop
Singer: Coldplay
8

Giải trình

  • Trang trí
    Song:  Hymn For The Weekend
    Genre: Pop
    Singer: Coldplay
    9 đảm bảo rằng phương thức
    class Music:
        # constructor
        def __init__[self]:
            # These are private variables
            self.__genre = "Pop"
            self.__singer = "Coldplay"
    
        # private function
        def __func[self]:
            print['Music: Hym For The Weekend']
    
        def foo[self]:
            # Accessing private members of the class
            obj.__func[]
            print["Genre:", obj.__genre]
            print["Singer:", obj.__singer]
    
    
    obj = Music[]  # Creating an object of the Music class
    obj.foo[]  # calling the private function
    0 là thuộc tính
  • class Music:
        # constructor
        def __init__[self]:
            # These are private variables
            self.__genre = "Pop"
            self.__singer = "Coldplay"
    
        # private function
        def __func[self]:
            print['Music: Hym For The Weekend']
    
        def foo[self]:
            # Accessing private members of the class
            obj.__func[]
            print["Genre:", obj.__genre]
            print["Singer:", obj.__singer]
    
    
    obj = Music[]  # Creating an object of the Music class
    obj.foo[]  # calling the private function
    1 decorator cho phép chúng tôi quá tải phương thức 
    class Music:
        # constructor
        def __init__[self]:
            # These are private variables
            self.__genre = "Pop"
            self.__singer = "Coldplay"
    
        # private function
        def __func[self]:
            print['Music: Hym For The Weekend']
    
        def foo[self]:
            # Accessing private members of the class
            obj.__func[]
            print["Genre:", obj.__genre]
            print["Singer:", obj.__singer]
    
    
    obj = Music[]  # Creating an object of the Music class
    obj.foo[]  # calling the private function
    0 . Bây giờ, biến 
    class Music:
        # constructor
        def __init__[self]:
            # These are private variables
            self.__genre = "Pop"
            self.__singer = "Coldplay"
    
        # private function
        def __func[self]:
            print['Music: Hym For The Weekend']
    
        def foo[self]:
            # Accessing private members of the class
            obj.__func[]
            print["Genre:", obj.__genre]
            print["Singer:", obj.__singer]
    
    
    obj = Music[]  # Creating an object of the Music class
    obj.foo[]  # calling the private function
    3 được bảo vệ. Nhưng điều này

? . – Bạn vẫn có thể truy cập bài hát từ bên ngoài bằng cách sử dụng

class Music:
    # constructor
    def __init__[self]:
        # These are private variables
        self.__genre = "Pop"
        self.__singer = "Coldplay"

    # private function
    def __func[self]:
        print['Music: Hym For The Weekend']

    def foo[self]:
        # Accessing private members of the class
        obj.__func[]
        print["Genre:", obj.__genre]
        print["Singer:", obj.__singer]


obj = Music[]  # Creating an object of the Music class
obj.foo[]  # calling the private function
4. Vì vậy, bạn phải luôn tránh truy cập hoặc sửa đổi các biến có tiền tố là
class Music:
    # constructor
    def __init__[self]:
        # These are private variables
        self.__genre = "Pop"
        self.__singer = "Coldplay"

    # private function
    def __func[self]:
        print['Music: Hym For The Weekend']

    def foo[self]:
        # Accessing private members of the class
        obj.__func[]
        print["Genre:", obj.__genre]
        print["Singer:", obj.__singer]


obj = Music[]  # Creating an object of the Music class
obj.foo[]  # calling the private function
5 từ bên ngoài lớp

❖ Kết luận

Vì vậy, chúng ta đã học về một trong những khái niệm OOP quan trọng nhất trong Python trong hướng dẫn này, đó là. e. , cách bạn có thể sử dụng các thuộc tính công khai, riêng tư và được bảo vệ trong Python

Tôi hy vọng bài viết này đã giúp bạn. Hãy theo dõi và đăng ký để có nhiều cuộc thảo luận thú vị hơn trong tương lai

Tác giả .
?‍?
?‍? RASHI AGARWAL

Shubham Sayon

Tôi là một người tạo nội dung và Blogger Python chuyên nghiệp. Tôi đã xuất bản nhiều bài báo và tạo các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc với tư cách là một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Networking

Sự khác biệt giữa các biến công khai và riêng tư trong Python là gì?

Một thành viên công khai có thể truy cập được từ bất kỳ nơi nào bên ngoài lớp nhưng trong một chương trình. Bạn có thể đặt và nhận giá trị của các biến công khai mà không cần bất kỳ thành viên nào. Một biến thành viên riêng tư hoặc chức năng không thể được truy cập, hoặc thậm chí được xem từ bên ngoài lớp

Các trường riêng tư trong Python là gì?

Nếu tên của hàm Python, phương thức lớp hoặc thuộc tính bắt đầu bằng [nhưng không kết thúc bằng] hai dấu gạch dưới , thì đó là tên riêng tư; .

Sự khác biệt giữa trường công khai/riêng tư và được bảo vệ là gì?

Nếu thành viên lớp được khai báo là công khai thì nó có thể được truy cập ở mọi nơi. Nếu các thành viên của lớp được khai báo là được bảo vệ thì nó chỉ có thể được truy cập trong chính lớp đó và bằng cách kế thừa các lớp con. Nếu các thành viên của lớp được khai báo là riêng tư thì nó chỉ có thể được truy cập bởi lớp xác định thành viên đó

Công cụ sửa đổi công khai Python là gì?

Công cụ sửa đổi truy cập công cộng. Các thành viên của lớp được khai báo là công khai có thể dễ dàng truy cập từ bất kỳ phần nào của chương trình . Tất cả các thành viên dữ liệu và chức năng thành viên của một lớp được công khai theo mặc định.

Chủ Đề