python - 是否可以遍历 dir() 的项目的 *values*?
问题描述
我正在尝试做这样的事情:
class random_class():
def __init__(self, color):
self.color = color
def iterate(self):
for item in dir(self):
print (self.item)
instance = random_class("blue")
random_class.iterate(instance)
但如果我这样做,我会得到:
AttributeError: 'random_class' object has no attribute 'item'
这意味着它正在搜索item
实例中命名的属性
解决方案
如果您正在尝试获取属性,您将删除 self 关键字,因为它不需要,因为您已经从 dir 中提取值。
但是,如果您想要实际值,则可以使用它getattr
来获取循环中的值。
class random_class():
def __init__(self, color):
self.color = color
def iterate(self):
for item in dir(self):
print (getattr(self, item))
instance = random_class("blue")
random_class.iterate(instance)
这会将关联值转储到对象上的该属性。
编辑
请注意,以上将包括类的内置方法。如果您不想这样做,请忽略以 __ 开头的项目
class random_class():
def __init__(self, color):
self.color = color
def iterate(self):
for item in dir(self):
if not item.startswith('__'):
print (getattr(self, item))
instance = random_class("blue")
random_class.iterate(instance)
推荐阅读
- php - Error retrieving credentials from the instance profile metadata server with credentials defined in .aws folder
- python - MacOS Python Oracle TCPS connection with Oracle instant client - ORA-29024: Certificate validation failure
- swiftui - Selection color of a NavigationLink in List was different in Simulator and Device (SwiftUI)
- php - 如何创建函数 prev_id?
- python - PayPal SDK - AttributeError:“HttpResponse”对象没有属性“get”
- csv - 调用其他功能并从 csv 读取数据不在示例中
- variables - 如何在詹金斯声明性管道中为变量设置预定义的动态名称
- python - Django - 测试异步方法导致 psycopg2.InterfaceError:连接已关闭
- cplex - PyMathProg 读取 CPLEX lp 文件
- c# - 使用 Timer 和 Thread、股票应用程序更新 Winforms 标签