>>> from env_helper import info; info()
页面更新时间: 2024-04-04 21:00:40
运行环境:
Linux发行版本: Debian GNU/Linux 12 (bookworm)
操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
13.5. 谈谈python的动态属性¶
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。
看下面一种常见的get/set操作
>>> class Student(object):
>>> pass
>>>
>>> s = Student()
>>> s.name = 'alex'
>>> print(s.name)
alex
它的动态属性是怎么来的呢?其实,它真正的过程是这样的
>>> class Student(object):
>>> pass
>>> s = Student()
>>> s.__setattr__("name","alex")
>>> s.__getattribute__("name")
'alex'
由此可见,__setattr__
与 __getattribute__
方法才是实例获得动态属性的真正原因。