Python 作为一种面向对象的编程语言,提供了多种将数据封装在类中的方法。
这种封装的关键方面之一是类变量的可见性,类变量可以分为公共变量、受保护变量和私有变量。在本文中,我们将探讨如何在 Python 类中定义公共、私有和受保护变量。
这些变量的行为与其他编程语言非常不同。这些访问控制只是Python中的命名约定,而不是对象的实际隐藏。
公共变量是最容易访问的变量类型。可以从课堂内外的任何地方访问它们。在Python中,除非明确定义,否则所有类变量默认都是公共的。
示例:
class MyClass: def __init__(self, name): self.name = name # Public variable obj = MyClass("John") print(obj.name) # Accessible outside the class #Output : John
在此示例中,name 是一个公共变量。您可以从类外访问和修改它,没有任何限制。
受保护的变量只能在类及其子类中访问。虽然 Python 不强制执行严格的访问控制,但表示变量受保护的约定是在其名称前添加一个下划线 (_)。
示例:
class MyClass: def __init__(self, name, age): self._age = age # Protected variable class ChildClass(MyClass): def display(self): print(f"Age: {self._age}") # Accessible within a subclass obj = ChildClass("John", 30) obj.display() # Output: Age: 30
在此示例中,年龄是受保护的变量。虽然 Python 不会阻止您直接在类外部访问它,但这样做违背了预期用途。
私有变量只能在定义它们的类中访问。 Python 通过在变量名前添加双下划线 (__) 来表示私有变量。这会触发名称修改,从而使从类外部访问私有变量变得更加困难(但并非不可能)。
示例:
class MyClass: def __init__(self, name, age, salary): self.__salary = salary # Private variable def display_salary(self): print(f"Salary: {self.__salary}") # Accessible within the class obj = MyClass("John", 30, 50000) obj.display_salary() # Output: Salary: 50000 # Trying to access the private variable outside the class print(obj.__salary) # Raises AttributeError
在这个例子中,salary 是一个私有变量。如果您尝试直接从类外部访问它,Python 将引发 AttributeError。但是,您仍然可以使用名称损坏的版本来访问它,尽管不鼓励这样做。
名称修改示例:
print(obj._MyClass__salary) # Output: 50000
这行代码演示了如何在内部重命名私有变量以包含类名称,从而使它们更难访问。
虽然 Python 的访问控制基于命名约定而不是严格执行,但遵循这些约定有助于保持代码的清晰度和完整性。了解如何定义和使用公共变量、受保护变量和私有变量对于 Python 中有效的面向对象编程至关重要。
以上是Python - 如何在类中定义公共、私有和受保护变量的详细内容。更多信息请关注PHP中文网其他相关文章!