本套课在线学习视频(网盘地址,保存到网盘即可免费观看):
https://pan.quark.cn/s/2040f00d3205
在Python中,变量的访问控制可以通过不同的命名约定实现,包括系统变量、保护变量和私有变量。这些命名约定有助于保护数据安全,防止意外修改,并确保数据的完整性。
00:00 - 面向对象编程中的变量访问控制
变量访问控制类型
- 系统变量:通常以下划线开始和结束,不宜直接使用。
- 保护变量:以单下划线开头,用于限制对变量的访问。
- 私有变量:以双下划线开头,用于防止外部直接访问和修改。
示例:Person类
class Person:def __init__(self, name, age):self._name = name # 保护变量self.__age = age # 私有变量def get_age(self):return self.__agedef set_age(self, age):if 0 <= age <= 120:self.__age = ageelse: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.__scoredef set_score(self, score):if 0 <= score <= 100:self.__score = scoreelse: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.__namedef get_age(self):return self.__ageperson = 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.__namedef get_age(self):return self.__agedef set_name(self, name):self.__name = namedef set_age(self, age):if 0 <= age <= 120:self.__age = ageelse: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面向对象编程中,通过使用系统变量、保护变量和私有变量,可以实现对变量的访问控制,保护数据安全,防止意外修改,并确保数据的完整性。私有变量(以双下划线开头)特别用于防止外部直接访问和修改,最佳实践是在类的内部访问私有变量,以确保数据的安全性和完整性。