Python——类成员修饰符

在Python中,类成员有三种修饰符:公有、私有和保护。这些修饰符用于控制类成员的访问权限。

1.公有成员

公有成员是指在类定义中没有使用任何修饰符的成员。公有成员可以在类内部和外部访问。例如:

class MyClass:
    def __init__(self):
        self.public_var = "I am a public variable"
        
    def public_method(self):
        print("I am a public method")
        
my_object = MyClass()
print(my_object.public_var)
my_object.public_method()

输出:

I am a public variable
I am a public method

在上面的例子中,public_varpublic_method都是公有成员。它们可以在类内部和外部访问。

2.私有成员

私有成员是指在类定义中使用两个下划线__开头的成员。私有成员只能在类内部访问,不能在类外部访问。例如:

class MyClass:
    def __init__(self):
        self.__private_var = "I am a private variable"
        
    def __private_method(self):
        print("I am a private method")
        
    def public_method(self):
        print(self.__private_var)
        self.__private_method()
        
my_object = MyClass()
my_object.public_method()

输出:

I am a private variable
I am a private method

在上面的例子中,__private_var__private_method都是私有成员。它们只能在类内部访问,不能在类外部访问。

需要注意的是,虽然私有成员不能在类外部访问,但是可以通过一些技巧访问。例如:

class MyClass:
    def __init__(self):
        self.__private_var = "I am a private variable"
        
    def __private_method(self):
        print("I am a private method")
        
    def public_method(self):
        print(self.__private_var)
        self.__private_method()
        
my_object = MyClass()
print(my_object._MyClass__private_var)
my_object._MyClass__private_method()

输出:

I am a private variable
I am a private method

在上面的例子中,我们通过类名+私有成员名的方式访问了私有变量和私有方法。这种方式虽然可以访问私有成员,但是不建议使用,因为这样做会破坏封装性,使代码变得不可维护。

3.保护成员

保护成员是指在类定义中使用一个下划线_开头的成员。保护成员可以在类内部和子类中访问,但是不能在类外部访问。例如:

class MyBaseClass:
    def __init__(self):
        self._protected_var = "I am a protected variable"
        
    def _protected_method(self):
        print("I am a protected method")

class MyDerivedClass(MyBaseClass):
    def public_method(self):
        print(self._protected_var)
        self._protected_method()
        
my_object = MyDerivedClass()
my_object.public_method()

输出:

I am a protected variable
I am a protected method

在上面的例子中,_protected_var_protected_method都是保护成员。它们可以在类内部和子类中访问,但是不能在类外部访问。在子类中,通过继承父类的保护成员,可以实现对父类成员的访问和修改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初见~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值