Python_dir+getattr_获取模块下所有属性对象

news2024/11/26 18:20:35

目录

dir()

执行结果

执行结果


dir()

该方法不带参数时,以列表类型返回当前范围内的变量名,变量包括常量、方法、类等。

带参数时,以列表类型返回参数的属性、方法的变量名。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

import os

a = "123"


def b():
    pass


class C:

    def __init__(self):
        pass

    def c(self):
        pass


# 不带参数,查询当前模块中的属性
print(dir())

# 带参数
# 查询指定模块的属性
print(dir(os))
# 查询类对象的属性
print(dir(C))

执行结果

['C', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'os']
['DirEntry', 'F_OK', 'GenericAlias', 'Mapping', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_AddedDllDirectory', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_check_methods', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_walk', '_wrap_close', 'abc', 'abort', 'access', 'add_dll_directory', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'unsetenv', 'urandom', 'utime', 'waitpid', 'waitstatus_to_exitcode', 'walk', 'write']
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'c']

通过执行结果可以看出,获取的变量名全为字符串,可以使用getattr()方法根据变量名获取对应的属性对象。

import tttt

# 获取模块中b 和 C对象
for v_name in dir(tttt):
    if "__" in v_name:
        continue
    it = getattr(tttt, v_name)
    if v_name == "b":
        b = it
    if v_name == "C":
        C = it

b()
c = C()

# 获取类的属性
for v_name in dir(c):
    if "__" in v_name:
        continue
    it = getattr(c, v_name)
    it()

执行结果


 -事必有法,然后有成- 最后祝大家早日达到测试的天花板!



 以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/724467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试 |网页frame与多窗口如何处理

简介 当我们要定位一个元素时,怎么都定位不到的时候就要考虑是不是浏览器内嵌里一个 frame 窗口或者要找的元素在新打开的窗口里。这时候就需要将进行 frame 的切换以及窗口的切换。 frame 类似于在原有主 html 的基础上又嵌套一个 html,而且嵌套的 ht…

如何打包arch软件并且打包到arch仓库中(超详细教程)

如何打包arch软件并且打包到arch仓库中(超详细教程) 前提一:注册arch账号 略,官网是:https://archlinux.org/ 前提二:将本地的ssh-key放入arch账号的ssh秘钥中 终端执行 生成ssh秘钥 ssh-keygen cd ~/.ssh cat id_rsa.pub将该段复制到arch账号中ssh中 更新 写PKGBUILD&a…

Spring Boot 中的授权是什么,如何使用

Spring Boot 中的授权是什么,如何使用 在现代 Web 应用程序开发中,授权是一项至关重要的安全措施。授权是指在用户登录后,对用户进行身份验证,并授予用户访问应用程序特定资源的权限。在 Spring Boot 中,授权是通过 S…

集群 第三章

1. keepalived 功能

UE5打包SDK未正确安装的问题

正文 Windows(笔者之前用的电脑是windows10,最新电脑使用的是windows11)下UE5打包项目的需要安装Visual Studio。 而且安装的时候需要选择上C 游戏开发相关模块。如下图所示: 有时候安装了Visual Studio 之后,还是不能…

使用Stable Diffusion生成艺术二维码

在数字艺术的世界中,二维码已经从单纯的信息承载工具转变为可以展示艺术表达的媒介。这是通过使用Stable Diffusion的技术实现的,它可以将任何二维码转化为独特的艺术作品。接下来,我们将一步步教你如何使用Stable Diffusion生成艺术二维码。…

有私域和无私域的区别?

公域流量和私域流量的区别 (1)渠道区别:私域流量的流量池是个体独有的,而公域流量的流量池是公共的。简单说,私域流量是借助个人平台直接获取用户的渠道,而公域流量是要凭借一个公共的平台,依托平台的流量来获取用户。…

极智开发 | 教你gitlab管理员密码忘了怎么办

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文介绍一下 教你gitlab管理员密码忘了怎么办。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接&…

Ubuntu系统下用VSCode断点调试C++代码

文章目录 0 引言1 创建vsdebug工程1.1 创建文件夹和文件1.2 C代码1.3 CMakeLists.txt1.4 build.sh脚本 2 VSCode配置文件2.1 tasks.json2.2 launch.json 3 编译运行和调试3.1 编译运行3.2 调试 0 引言 Ubuntu下不能像Windows下使用Visual Studio那样方便Debug调试C代码&#x…

C++图形开发(9):静止的矩形(fillrectangle函数)

我们的graphics库提供了一个用于绘制矩形的函数&#xff0c;它就是…… fillectangle();其格式为&#xff1a; fillectangle(矩形左上角的x坐标,矩形左上角的y坐标&#xff0c;x方向的距离&#xff0c;y方向的距离);举个栗子&#xff1a; #include<graphics.h> #inclu…

Feign 调用报 RequestParam.value() was empty on parameter 0

详细报错: FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0 背景 最近在使用 RequestParam、RequestBody 注解定义 feign 接口的时候出现一些使用上的问题&#xff…

Ceph:关于Ceph 集群中数据分布和容灾理论的一些笔记

写在前面 准备考试&#xff0c;整理 Ceph 相关笔记博文内容涉及,Ceph 集群中数据如何分布以及不同的容灾池介绍理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有…

【MySQL系列】数据库基础学习_简单认识数据库

「前言」文章内容大致是数据库基础&#xff0c;以及数据库的基本知识。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 「枫叶先生有点文青病」「句子分享」 我见青山多妩媚&#xff0c;料青山、见我应如是。 ——辛弃疾《贺新郎》 目录 一、连接MySQL服务器二…

hcip第三次作业

1、合理规划IP地址&#xff0c;启用OSPF单区域。 2、R1-R2之间启用PPP的PAP单向认证。 把R1作为主认证方 然后在R2处做添加——帐号、密码 接口处于双UP的状态&#xff0c;证明认证成功 3、R2-R3之间启用PPP的chap双向认证 R2作为主认证方。 此时4/0/1口处于up - down状态 然…

Zabbix6.0 的部署、自定义监控服务

目录 一、概述 二、 zabbix 1.zabbix简介 2.zabbix监控原理 3. Zabbix 6.0 新特性 3.1Zabbix server高可用防止硬件故障或计划维护期的停机 3.2 Zabbix 6.0 LTS新增Kubernetes监控功能&#xff0c;可以在Kubernetes系统从多个维度采集指标 4. Zabbix 6.0 功能组件 4.1…

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:/

-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathD:/在内存溢出时导出整个堆信息 指定导出堆的存放路径(D:/java_customName.hprof)&#xff0c;可以自定义dump名字&#xff1b;自定义名字时重复执行dump文件貌似不会覆盖(D:/)&#xff0c;只指定路径会自动生成Dump文件&…

10G CWDM和DWDM的优势和应用场景解析

10G CWDM和10G DWDM光模块都是用于光纤通信系统的传输技术&#xff0c;它们在光纤网络中使用不同的光波分复用技术。本期文章我们通过分析10G CWDM SFP和10G DWDM SFP两种光模块进行区别对比。 一、10G CWDM和DWDM光模块参数区别对比 二、易天光通信10G CWDM和DWDM光模块优势对…

品牌从0到1,中小企业如何在市场中脱颖而出?

道叔在初创小企业做过品牌&#xff0c;所以对这一块很清楚。在资金有限的中小企业做品牌&#xff0c;并不需要在品牌建设上砸钱&#xff0c;没钱也不是不可以做品牌&#xff0c;不花钱有不花钱的做法。 以下是个人在小企业做品牌的一些实际操作经验&#xff0c;都是干得不能再…

【UnitDOTS 小知识】ChunkComponet存储

ChunkComponet存储 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 一、ChunkComponet的特点 按ChunkComponent按Chunck存储的&#xff0c;他…