Variáveis Privadas
Em Python, variáveis privadas são variáveis que se destinam a serem usadas apenas dentro da classe na qual são definidas, e não por código externo. Variáveis privadas não são diretamente acessíveis de fora da classe.
Para definir uma variável privada na classe Circle, você pode usar o prefixo de sublinhado duplo (__) seguido pelo nome da variável. Por exemplo:
class Circle:
def __init__(self, radius):
self.__radius = radius
Isso define uma variável privada __radius na classe Circle.
Variáveis privadas se destinam a serem usadas apenas dentro da classe na qual são definidas. Elas não são diretamente acessíveis de fora da classe. Por exemplo, se você tentar acessar a variável __radius de fora da classe Circle, você receberá um erro:
circle1 = Circle(5)
print(circle1.__radius) ## This will raise an AttributeError
Variáveis privadas são úteis para encapsular dados dentro de uma classe e limitar a capacidade do código externo de modificá-los. No entanto, é importante notar que as variáveis privadas não são verdadeiramente privadas em Python e ainda podem ser acessadas de fora da classe usando "name mangling" (ofuscação de nomes).
Name mangling é uma técnica que envolve adicionar um prefixo especial ao nome da variável para dificultar o acesso de fora da classe.
Por exemplo, a variável __radius ainda pode ser acessada de fora da classe Circle usando a seguinte sintaxe:
print(circle1._Circle__radius) ## This will print 5
No entanto, isso não é considerado uma boa prática de programação e deve ser evitado.
Em vez disso, você deve usar variáveis privadas apenas dentro da classe na qual são definidas e fornecer métodos públicos para acessar ou modificar os dados, se necessário.
Aqui está um exemplo de uma classe Circle com uma variável privada __radius e métodos públicos para acessar e modificar o raio:
class Circle:
def __init__(self, radius):
self.__radius = radius
def get_radius(self):
return self.__radius
def set_radius(self, radius):
self.__radius = radius
Para acessar o raio de um objeto Circle, você pode usar o método get_radius:
circle1 = Circle(5)
print(circle1.get_radius()) ## prints 5
Para modificar o raio de um objeto Circle, você pode usar o método set_radius:
circle1.set_radius(10)
print(circle1.get_radius()) ## prints 10