python基础学习-公有变量与私有变量

1、公有变量

默认上来说对象的属性和方法都是公开的,我们可以通过点这个操作符进行访问

# 公有的属性和方法通过点操作符访问
class Person:
  name = '人名'
p = Person()
print(p.name)

在这里插入图片描述

2、私有变量

在Python中定义私有变量只需要在变量名或函数名前加上两个下划线"_",那么这个函数或变量就会为私有的了。

无法直接访问私有变量

# 私有变量,通过添加两个下划线定义
class Person:
  __name = '人名'
p = Person()


# 无法从外部进行访问
print(p.__name)

在这里插入图片描述

调用方法返回内部属性
这里把person当中的name属性私有化后,我们无法在外部访问这个属性,我们可以通过调用方法,返回类的属性,从内部进行访问。

# 私有变量,通过添加两个下划线定义
class Person:
  __name = '人名'
  # 添加方法从内部进行访问
  def getPivateName(self):
    return self.__name
p = Person()


# # 无法从外部进行访问
# print(p.__name)

# 通过调用方法从内部访问name属性
print(p.getPivateName())

在这里插入图片描述

名字改编
但其实python内部采用了一种叫 name mangling(名字改编)的技术,把双下划线开头的变量进行改名。实际上在外部使用“_类名__变量名“即可访问双下划线开头的私有变量了

# 私有变量,通过添加两个下划线定义
class Person:
  __name = '人名'
  # 添加方法从内部进行访问
  def getPivateName(self):
    return self.__name
p = Person()


# # 无法从外部进行访问
# print(p.__name)

# # 通过调用方法从内部访问name属性
# print(p.getPivateName())

# 通过名字改编 name mangling 访问内部属性
print(p._Person__name)

在这里插入图片描述
其实这里的私有机制有一点伪私有的感觉,python的类事实上是没有权限控制的

猜你喜欢

转载自blog.csdn.net/m0_47146037/article/details/120696649