首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在python中区分从类(或文件)内部和外部访问类属性

在Python中,可以通过使用特殊的属性名称来区分从类内部和外部访问类属性。常用的特殊属性名称有:

  1. 公有属性(Public attributes):公有属性可以在类的内部和外部访问。它们以正常的方式定义和访问,没有特殊的前缀或约定。例如:
代码语言:txt
复制
class MyClass:
    def __init__(self):
        self.public_attr = 10
        
my_obj = MyClass()
print(my_obj.public_attr)  # 从外部访问公有属性
  1. 私有属性(Private attributes):私有属性仅在类的内部可访问,外部无法直接访问。它们的命名约定是在属性名称前面添加两个下划线“__”。例如:
代码语言:txt
复制
class MyClass:
    def __init__(self):
        self.__private_attr = 20
        
    def __private_method(self):
        print("This is a private method.")
        
my_obj = MyClass()
print(my_obj._MyClass__private_attr)  # 从外部访问私有属性
my_obj._MyClass__private_method()  # 从外部调用私有方法
  1. 受保护属性(Protected attributes):受保护属性在类的内部和子类中可访问,但在类的外部无法直接访问。它们的命名约定是在属性名称前面添加一个下划线“_”。例如:
代码语言:txt
复制
class MyClass:
    def __init__(self):
        self._protected_attr = 30
        
    def _protected_method(self):
        print("This is a protected method.")
        
class MySubClass(MyClass):
    def __init__(self):
        super().__init__()
        
my_obj = MyClass()
print(my_obj._protected_attr)  # 从外部访问受保护属性
my_obj._protected_method()  # 从外部调用受保护方法

my_sub_obj = MySubClass()
print(my_sub_obj._protected_attr)  # 从子类外部访问受保护属性
my_sub_obj._protected_method()  # 从子类外部调用受保护方法

Python中的属性访问控制仅仅是一种约定,实际上,通过特殊的方式仍然可以从外部访问私有和受保护属性。但是,根据惯例,开发者应该将私有和受保护属性视为类的内部实现细节,并遵循封装原则,尽量不直接访问和修改这些属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券