(4)请尝试自接访问某对象的私有属性年龄,看看是否报错,再用公有的获取年龄方法获取年龄。其实Python中的私有权限是一种“伪私有”,请上网查找Python中私有权限的实现方式,直接访问对象的年龄属性。
时间: 2024-05-13 21:15:25 浏览: 16
尝试自接访问某对象的私有属性年龄,代码如下:
```python
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
p = Person("Tom", 20)
print(p.__age)
```
运行后会报错 `AttributeError: 'Person' object has no attribute '__age'`,因为 Python 中的私有属性是通过在属性名前面加上两个下划线实现的,这种方式会使属性名变成一个较长的名称,防止被访问和修改。
我们可以使用公有的获取年龄方法获取年龄,代码如下:
```python
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_age(self):
return self.__age
p = Person("Tom", 20)
print(p.get_age())
```
这样就可以获取到对象的年龄属性了。
Python 中的私有权限是一种“伪私有”,实际上 Python 仍然可以通过一定的方式访问到私有属性。在 Python 中,如果在属性名前面加上一个下划线,表示该属性是受保护的,只有该类和子类可以访问;如果加上两个下划线,表示该属性是私有的,只有该类内部可以访问。但是在 Python 中,我们仍然可以通过 `_类名__属性名` 的方式访问私有属性,这也就是所谓的“伪私有”属性。