Python全系列 教程
3567个小节阅读:5931.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Python对于类的成员没有严格的访问控制限制,这与其他面向对象语言有区别。关于私有属性和私有方法,有如下要点:
_类名__私有属性(方法)名
”访问私有属性(方法) ⚠️【注】方法本质上也是属性!只不过是可以通过()执行而已。
所以,此处讲的私有属性和公有属性,也同时讲解了私有方法和公有方法的用法。
如下测试中,同时也包含了私有方法和公有方法的例子。
【测试】私有属性和公有属性使用测试
xxxxxxxxxx
#测试私有属性、私有方法
class Employee:
__company = "百战程序员" #私有.通过dir查到_Employee__company
def __init__(self,name,age):
self.name = name
self.__age = age #私有实例属性
def say_company(self):
print("我的公司是:",Employee.__company) #类内部可以直接访问私有属性
print(self.name,"的年龄是:",self.__age)
self.__work()
def __work(self): #私有实例方法,通过dir可查到_Employee__work
print("工作!好好工作,好好赚钱,娶个媳妇!")
p1 = Employee("高淇",32)
print(p1.name)
print(dir(p1)) #
p1.say_company()
print(p1._Employee__age) #通过这种方式可以直接访问到私有属性 。通过dir可以查到属性:_Employee__age
#print(p1.__age) #直接访问私有属性,报错
#p1.__sleep() #直接访问私有方法,报错
执行结果:
xxxxxxxxxx
高淇
['_Person__age', '_Person__leg_num', '_Person__sleep', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'say_age']
腿的数目: 2
高淇 的年龄是: 18
睡觉
18
从打印的
Person
对象所有属性我们可以看出。私有属性__age
在实际存储时是按照_Person__age
这个属性来存储的。这也就是为什么我们不能直接使用__age
而可以使用_Person__age
的根本原因。
实时效果反馈
1. 关于python中的私有属性和私有方法,说法错误的是:
xxxxxxxxxx
class Employee:
__company = "百战程序员" #私有.通过dir查到_Employee__company
def __work(self): #私有实例方法,通过dir可查到_Employee__work
print("工作!好好工作,好好赚钱,娶个媳妇!")
A 通常约定,两个下划线开头的属性是私有的(private)。其他为公共的(public)
B __company
是私有属性
C __work(self)
是私有方法
D python中,私有属性和私有方法很严格,外部绝不可能访问
答案
1=>D