Python类通过传递变量进行声明
我试图通过传递变量来创建一个对象,但它似乎不起作用 我在下面举了一个简单的例子来说明我想要什么。请帮我处理这个问题 成功地Python类通过传递变量进行声明,python,class,attributes,getattr,dremio,Python,Class,Attributes,Getattr,Dremio,我试图通过传递变量来创建一个对象,但它似乎不起作用 我在下面举了一个简单的例子来说明我想要什么。请帮我处理这个问题 成功地 temp = catalog.TEST temp = catalog.PROD 不起作用,它传递字符串“i”而不是列表元素作为属性 lists = ['TEST,'PROD'] for i in lists: temp = catalog.i 完整代码 我正在使用dremio客户端这个包() 谢谢Pavel的解答,但我还有一个更复杂的问题 list = ["TE
temp = catalog.TEST
temp = catalog.PROD
不起作用,它传递字符串“i”而不是列表元素作为属性
lists = ['TEST,'PROD']
for i in lists:
temp = catalog.i
完整代码
我正在使用dremio客户端这个包()
谢谢Pavel的解答,但我还有一个更复杂的问题
list = ["TEST","TEST.DEMO"]
# what's work - directly declare
test = catalog.TEST.DEMO
# works for "TEST" not works for TEST.DEMO
for i in list:
temp = getattr(catalog, i)
执行
temp=catalog.i
操作时,实际上是试图设置catalog
的属性i
,而不是变量i
下的值
您可以尝试改用getattr
:
import dremio_client as dc
mydremio = dc.init(os.getcwd() + '/.config')
catalog = mydremio.data
# TEST and PROD are the folders that exist in my dremio server
a = catalog.TEST
对于第二种情况,您可以尝试执行以下操作:
for i in list:
fields = i.split('.')
temp = catalog
for field in fields:
temp = getattr(temp, field)
我在这里所做的是将I
按
符号拆分,以创建我需要访问的字段列表。因此,
“TEST.DEMO”。拆分('.')
将成为[“TEST”,“DEMO”]
我不确定它是否有效,但我只是想展示一下主要思想。谢谢Pavel,它有效,但我还有其他问题要问。我只是更新我的问题。
for i in list:
fields = i.split('.')
temp = catalog
for field in fields:
temp = getattr(temp, field)