本套课在线学习视频(网盘地址,保存到网盘即可免费观看):

https://pan.quark.cn/s/2040f00d3205

在Python中,变量的访问控制可以通过不同的命名约定实现,包括系统变量、保护变量和私有变量。这些命名约定有助于保护数据安全,防止意外修改,并确保数据的完整性。

00:00 - 面向对象编程中的变量访问控制

变量访问控制类型

  1. 系统变量:通常以下划线开始和结束,不宜直接使用。
  2. 保护变量:以单下划线开头,用于限制对变量的访问。
  3. 私有变量:以双下划线开头,用于防止外部直接访问和修改。

示例:Person类

class Person:
    def __init__(self, name, age):
        self._name = name  # 保护变量
        self.__age = age   # 私有变量

    def get_age(self):
        return self.__age

    def set_age(self, age):
        if 0 <= age <= 120:
            self.__age = age
        else:
            print("Invalid age. Please set a valid age.")

person = Person("Alice", 30)
print(person._name)  # 可以访问保护变量
# print(person.__age)  # 无法直接访问私有变量
print(person.get_age())  # 通过方法访问私有变量
person.set_age(150)  # 尝试设置无效的年龄
person.set_age(25)   # 设置有效的年龄
print(person.get_age())

03:42 - 实现变量范围保护与私有变量的应用

变量范围保护

通过设置变量的取值范围以及将其转换为私有变量来保护数据安全。

示例:成绩管理

class Student:
    def __init__(self, name, score):
        self._name = name  # 保护变量
        self.__score = score  # 私有变量

    def get_score(self):
        return self.__score

    def set_score(self, score):
        if 0 <= score <= 100:
            self.__score = score
        else:
            print("Invalid score. Please set a valid score.")

student = Student("Bob", 85)
print(student.get_score())  # 通过方法访问私有变量
student.set_score(150)  # 尝试设置无效的成绩
student.set_score(90)   # 设置有效的成绩
print(student.get_score())

05:32 - Python中的私有变量及其访问控制

私有变量的访问控制

私有变量(以双下划线开头)用于防止外部直接访问和修改,保证数据的安全性和完整性。

示例:私有变量的访问

class Person:
    def __init__(self, name, age):
        self.__name = name  # 私有变量
        self.__age = age    # 私有变量

    def get_name(self):
        return self.__name

    def get_age(self):
        return self.__age

person = Person("Alice", 30)
# print(person.__name)  # 无法直接访问私有变量
print(person.get_name())  # 通过方法访问私有变量
print(person.get_age())   # 通过方法访问私有变量

# 尝试修改私有变量
# person.__name = "Bob"  # 不会修改原有的私有变量,而是创建一个新的变量
# print(person.get_name())  # 仍然输出 "Alice"

最佳实践

尽量在类的内部访问私有变量,以确保数据的安全性和完整性。

class Person:
    def __init__(self, name, age):
        self.__name = name  # 私有变量
        self.__age = age    # 私有变量

    def get_name(self):
        return self.__name

    def get_age(self):
        return self.__age

    def set_name(self, name):
        self.__name = name

    def set_age(self, age):
        if 0 <= age <= 120:
            self.__age = age
        else:
            print("Invalid age. Please set a valid age.")

person = Person("Alice", 30)
print(person.get_name())  # 通过方法访问私有变量
print(person.get_age())   # 通过方法访问私有变量
person.set_name("Bob")
person.set_age(25)
print(person.get_name())  # 输出 "Bob"
print(person.get_age())   # 输出 25

总结

在Python面向对象编程中,通过使用系统变量、保护变量和私有变量,可以实现对变量的访问控制,保护数据安全,防止意外修改,并确保数据的完整性。私有变量(以双下划线开头)特别用于防止外部直接访问和修改,最佳实践是在类的内部访问私有变量,以确保数据的安全性和完整性。