所以今天我问过,在Python中是否有类似Protected
成员类的内容,很多人都说这里没有像Public
Protected
或{{{{}} 1}}。但我做了以下代码来测试这个:
Private
从我做过的外类:
class Vehiculo():
def __init__(self, peso):
self.__peso = peso
它打印的内容仍然是10,所以这就像car = Vehiculo(10)
car.__peso = 20
,但是当我用一个下划线更改了类变量时:
Private
它打印了20个。有人能清楚地向我解释一下吗?我读了一篇非常相似的帖子(许多人认为是重复的),但我不理解他们所说的话。这正是class Vehiculo():
def __init__(self, peso):
self._peso = peso
Public
行为。我想知道如何做Private
行为,或者甚至可能做到这一点。
谢谢并重新注册。
答案 0 :(得分:2)
Python类中没有public,private或protected之类的东西。私有方法和值通常以_
下划线为前缀作为约定,以向其他开发人员暗示不应直接访问它。但是,没有任何机制可以阻止您简单地访问这些成员。
双下划线约定(__init__
,__lt__
等)通常由Python本身用于设置特定的模块级或类级变量。这些有时被称为"magic methods"。
答案 1 :(得分:1)
带有双下划线前缀的属性被破坏,但它们不是私有的。你仍然可以car._Vehiculo__peso = 20
,这将成功设置"私人"变量