Python 访问修饰符:公共、私有和受保护

Python 访问修饰符:公共、私有和受保护

访问修饰符被面向对象的编程语言如C++Java、Python等使用,以限制类成员变量和方法对类外部的访问。封装是一种面向对象的编程原则,使用访问修饰符(如公共、私有和受保护)来保护类的内部数据。

Python支持三种类型的访问修饰符,即公共、私有和受保护。这些访问修饰符对于从类外部的任何对象访问类的成员变量和方法提供了限制。

公共访问修饰符

默认情况下,成员变量和方法是公共的,这意味着它们可以从类的内部和外部的任何地方访问。不需要使用public关键字来使类、方法和属性成为公共的。以下是公共访问修饰符的示例:

示例:

学生类有两个成员变量,名字和年龄,以及一个打印成员变量值的display方法。这些变量和方法都是公共的,因为没有指定关键字。

class Student:
   def __init__(self, name, age):
      self.name = name
      self.age = age

   def display(self):
      print("Name:", self.name)
      print("Age:", self.age)

s = Student("John", 20)
s.display()

输出

Name: John
Age: 20

私有访问修饰符

带有私有访问修饰符的类属性和方法只能在定义它们的类内部访问,不能在类外部访问。在Python中,通过在声明前加上两个下划线(‘__’)前缀来声明私有属性和方法。

示例

类BankAccount被声明为拥有两个私有变量:account_number和balance,以及一个私有属性display_balance,用于打印银行账户的余额。由于属性和方法都是私有的,因此在从类外部访问它们时会引发Attribute error错误。

class BankAccount:
   def __init__(self, account_number, balance):
      self.__account_number = account_number
      self.__balance = balance

   def __display_balance(self):
      print("Balance:", self.__balance)

b = BankAccount(1234567890, 5000)
b.__display_balance()

输出结果

AttributeError: 'BankAccount' object has no attribute '__display_balance'

保护访问修饰符

具有保护访问修饰符的类属性和方法可以在类内部和继承该保护类的类中访问。在Python中,使用单下划线(“_”)作为前缀来声明受保护的成员和方法的名称。

示例

Person类有两个受保护的属性,即_name_age,并且有一个受保护的方法_display,该方法显示person类的属性值。Student类从Person类继承,具有额外的受保护属性_rol

class Person:
   def __init__(self, name, age):
      self._name = name
      self._age = age

   def _display(self):
      print("Name:", self._name)
      print("Age:", self._age)

class Student(Person):
   def __init__(self, name, age, roll_number):
      super().__init__(name, age)
      self._roll_number = roll_number

   def display(self):
      self._display()
      print("Roll Number:", self._roll_number)

s = Student("John", 20, 123)
s.display()

输出

Name: John
Age: 20
Roll Number: 123

结论

在本文中,我们了解了三种访问修饰符,这些修饰符用于Python和其他面向对象编程语言中的数据隐藏和保护。公共(Public),私有(private)和受保护(protected)是Python中使用的三种访问修饰符。类的公共属性和方法可以从类的内部或外部的任何地方进行访问。私有成员变量和属性只能从声明了这些属性和方法的类内部进行访问。当我们需要从类的内部以及从继承自该类的类中访问类的属性和方法时,使用受保护的访问修饰符。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程