Python中通过property设置类属性的访问
作者:棉猴
Python类的所有属性都是公共的,无法将其设置为私有,即任何实例对象都可以通过该属性名对其进行访问。为了达到类似C++类的封装性能,可以使用property来设置Python类属性的访问权限。
类的封装性能,指的是只能通过指定的方法对类的属性进行访问。因此,首先为类定义访问属性的方法。
1 定义访问类属性的方法
代码如下所示
class A: def __init__(self, name): self.name = name def get_name(self): return self.name def set_name(self, name): self.name = name
其中,类A有一个名为name的属性,通过get_name()方法获取该属性,通过set_name()方法设置该属性。
2 使用property()设置访问类属性的方法
在定义完获取和设置属性的方法之后,在类A的内部使用property()设置访问类属性的方法,代码如下所示。
name = property(get_name, set_name)
其中,property()的第一个参数表示获取指定属性时要调用的方法,第二个参数表示设置指定属性时要调用的方法。
3 获取和设置指定属性
通过如下代码获取和设置指定属性。
a1 = A('yang') print(a1.my_name) a1.my_name = 'li' print(a1.my_name)
第一个print()中打印的是a1.my_name,此时实际上调用的是property()的第一个参数,即get_name()获取类A的属性name;之后通过a1.my_name设置类A的属性name,此时调用的是类A的set_name()方法。
4 property()扩展用法
在“2 使用property()设置访问类属性的方法”中提到了property()前两个参数的含义。property()第三个参数表示在删除(del)实例对象时,自动调用的方法,而第四个参数的类型是字符串,表示对类的描述,在显示__doc__属性时显示。
在类A的内部添加如下代码:
def del_name(self): print('del_name') my_name = property(get_name, set_name, del_name, '我是类A')
之后,在主程序中使用如下代码
print(A.my_name.__doc__) del a1.my_name
此时,程序会打印“我是类A”和“del_name”信息。
到此这篇关于Python中通过property设置类属性的访问的文章就介绍到这了,更多相关Python property设置类属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- 掌握Python property装饰器巧妙管理类的属性
- python装饰器中@property属性的使用解析
- 关于python中@property的使用方法
- Python property装饰器使用案例介绍
- Python深入分析@property装饰器的应用
- python 中的@property的用法详解
- python中@Property属性使用方法
- Python中property属性的用处详解
- Python装饰器中@property使用详解
- Python中关于property使用的小技巧
- Python的@property的使用
- 详解Python装饰器之@property
- Python property函数的具体使用