python为什么不设计私有属性
1个回答
展开全部
#看你怎么理解这个私有的含义:
class Person:
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Student(Person):
def __init__(self, name, gender, age, snum):
super(Student, self).__init__(name, gender)
self.__age = age
self.studentnumber = snum
p = Student('Tom', 'Male', 19, 32)
print(p.gender)
print(p.__dict__)
print(p.__age)
'''
执行之后:
Male
{'name': 'Tom', 'gender': 'Male', '_Student__age': 19, 'studentnumber': 32}
Traceback (most recent call last):
File "D:\Program Files (x86)\Python 3.6.1 (64bit)\Python script practices\new_1.py", line 17, in <module>
print(p.__age)
AttributeError: 'Student' object has no attribute '__age'
这里即说明__age这个属性从外部访问来看,是没有的,从p这个属性字典key中__age属性是以_Student__age的形式体现,可以这么理解为__age是属于Student类的私有属性
当然这个所谓的私有属性,在特殊情况需要修改的时候,也是可以外部访问修改,改变访问语句即可,看个人需要吧
这是我的个人理解
'''
class Person:
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Student(Person):
def __init__(self, name, gender, age, snum):
super(Student, self).__init__(name, gender)
self.__age = age
self.studentnumber = snum
p = Student('Tom', 'Male', 19, 32)
print(p.gender)
print(p.__dict__)
print(p.__age)
'''
执行之后:
Male
{'name': 'Tom', 'gender': 'Male', '_Student__age': 19, 'studentnumber': 32}
Traceback (most recent call last):
File "D:\Program Files (x86)\Python 3.6.1 (64bit)\Python script practices\new_1.py", line 17, in <module>
print(p.__age)
AttributeError: 'Student' object has no attribute '__age'
这里即说明__age这个属性从外部访问来看,是没有的,从p这个属性字典key中__age属性是以_Student__age的形式体现,可以这么理解为__age是属于Student类的私有属性
当然这个所谓的私有属性,在特殊情况需要修改的时候,也是可以外部访问修改,改变访问语句即可,看个人需要吧
这是我的个人理解
'''
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询