1 内建函数和方法相关的属性
内建的模块是指用C写的模块,可以通过sys模块的builtin_module_names字段查看哪些模块为内建模块。这些模块中的函数和方法的属性被使用的不多,这里只做了解即可。
内置函数和方法相关的属性如下表所示
| 属性 | 说明 |
|---|---|
| doc | 函数或方法的文档 |
| name | 函数或方法定义时的名字 |
| self | 只有方法有这个属性,可以调用所属类或实例 |
| module | 函数或方法所在模块名 |
示例如下:
print(abs.__doc__)
result:
Return the absolute value of the argument.
print(abs.__name__)
result:
abs
print(abs.__self__)
result:
<module 'builtins' (built-in)>
print(abs.__module__)
result:
builtins
2 自定义函数相关的属性
自定义函数相关的属性如下表所示
| 属性 | 说明 |
|---|---|
| doc | 函数的文档 |
| name | 函数定义时的名字 |
| module | 函数对应的模块名,而不是模块对象 |
| dict | 是一个包含函数里面可用属性名、可用属性构成的字典 |
示例如下:
def test_func(name, age, sex="男"):
"""
返回个人信息
:param name: 姓名
:param age: 年龄
:param sex: 性别
:return: 个人信息
"""
return name + "," + age + "," + sex
print(test_func.__doc__)
result:
返回个人信息
:param name: 姓名
:param age: 年龄
:param sex: 性别
:return: 个人信息
print(test_func.__name__)
result:
test_func
print(test_func.__module__)
result:
__main__
print(test_func.__dict__)
result:
{}
3 自定义方法相关的属性
| 属性 | 说明 |
|---|---|
| doc | 方法的文档 |
| name | 方法定义时的名字 |
| module | 对应的模块名,而不是模块对象 |
| dict | 是一个包含方法里面可用属性名、可用属性构成的字典 |
| func | 获取方法里实际函数的引用 |
| self | 指向方法的调用者,类或者类的实例 |
| class | 方法的类型 |
示例如下:
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def say(self):
"""
说话的方法
"""
print(f"{self.name}在谈话")
p = Person("小明", 23)
print(p.say.__doc__)
result:
说话的方法
print(p.say.__name__)
result:
say
print(p.say.__module__)
result:
__main__
print(p.say.__func__)
result:
<function Person.say at 0x000001A374974AF8>
print(p.say.__self__)
result:
<__main__.Person object at 0x0000024859439748>
print(p.say.__class__)
result:
<class 'method'>
4 生成器相关的属性
| 属性 | 说明 |
|---|---|
| gi_code | 生成器对应的code对象 |
| gi_frame | 生成器对应的frame对象 |
| gi_running | 生成器是否在执行,生成器在yield以后,执行yield之后的代码前该值为0 |
gen = (i for i in range(5))
print(gen.gi_code)
print(gen.gi_frame)
print(gen.gi_running)
result:
<code object <genexpr> at 0x00000288B9BE3780, file "D:/workspace/test_study/test_study/test.py", line 10>
<frame at 0x00000288B96A24D8, file 'D:/workspace/test_study/test_study/test.py', line 10, code <genexpr>>
False