Python中类私有属性外部赋值的原因是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1084个文字,预计阅读时间需要5分钟。
Python中,类中的私有属性可以在外部被访问和赋值,但这通常不是最佳实践。以下是对您提供内容的简化
> Python中,类内私有属性为何可在外部访问并赋值?问题引入:在慕课网上学习Python时,看到类中的私有属性时,一位同学提问:将count改为__count,为什么实例变量在外部仍然自然访问?
注意:以上改写尽量简洁,但保留了原句的核心信息。
Python:为什么类中的私有属性可以在外部赋值并访问?
问题引入
在慕课网上学习Python**类中的私有属性**的时候,看到了一个同学的提问:
将count改为__count,为什么实例变量在外部仍然可以修改__count?这里print p1.__count可以打印出100
class Person(object): __count = 0 def __init__(self, name): Person.__count = Person.__count + 1 self.name = name print Person.__count p1 = Person('Bob') p1.__count=100 print p1.__count p2 = Person('Alice') print Person.__count
问题解决:
单刀直入版:
这是因为给p1.__count赋值的操作,其实是在p1中定义了一个名为__count的变量(因为Python中的都是动态变量),而没有改变类中真正的属性。
本文共计1084个文字,预计阅读时间需要5分钟。
Python中,类中的私有属性可以在外部被访问和赋值,但这通常不是最佳实践。以下是对您提供内容的简化
> Python中,类内私有属性为何可在外部访问并赋值?问题引入:在慕课网上学习Python时,看到类中的私有属性时,一位同学提问:将count改为__count,为什么实例变量在外部仍然自然访问?
注意:以上改写尽量简洁,但保留了原句的核心信息。
Python:为什么类中的私有属性可以在外部赋值并访问?
问题引入
在慕课网上学习Python**类中的私有属性**的时候,看到了一个同学的提问:
将count改为__count,为什么实例变量在外部仍然可以修改__count?这里print p1.__count可以打印出100
class Person(object): __count = 0 def __init__(self, name): Person.__count = Person.__count + 1 self.name = name print Person.__count p1 = Person('Bob') p1.__count=100 print p1.__count p2 = Person('Alice') print Person.__count
问题解决:
单刀直入版:
这是因为给p1.__count赋值的操作,其实是在p1中定义了一个名为__count的变量(因为Python中的都是动态变量),而没有改变类中真正的属性。

