Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以在另一个变量的赋值中赋值变量?_Python_Variable Assignment - Fatal编程技术网

Python 是否可以在另一个变量的赋值中赋值变量?

Python 是否可以在另一个变量的赋值中赋值变量?,python,variable-assignment,Python,Variable Assignment,我有两个问题: 1) 我想写一个类似这样的语句:superVar=[subVar1='a',subVar2='b'] 在这项声明之后,我想: superVar=['a','b'] subVar1='a' subVar2='b' 这在python中是可以实现的吗 2) 我想在类的init函数中执行以下操作: self.superVar=[v1='a',v2='b'] 在这项声明之后,我想: self.superVar=['a','b'] self.superVar.v1='a' self.supe

我有两个问题:

1) 我想写一个类似这样的语句:
superVar=[subVar1='a',subVar2='b']

在这项声明之后,我想:

superVar=['a','b']

subVar1='a'

subVar2='b'

这在python中是可以实现的吗

2) 我想在类的init函数中执行以下操作:

self.superVar=[v1='a',v2='b']

在这项声明之后,我想:

self.superVar=['a','b']

self.superVar.v1='a'

self.superVar.v2='b'

i、 e.将“superVar”作为其他变量名称的一部分

正如你可能已经猜到的,我真正想做的是(2)以上。(1) 这只是第一步,如果(2)不可能,我也会很高兴

非常感谢!
你是说词典吗

superVar = {'subVar1': 'a', 'subVar2': 'b'}
superVar['subVar1']
# 'a'
superVar['subVar2']
# 'b'
d = {'subVar1': 'value1', 'subVar2': 'value2'}
superVar = d.values()
在课堂上:

class Foo(object):
    def __init__(self, a, b):
        self.superVar = {'subVar1' : a, 'subVar2' : b}


bar = Foo('one', 'two')
bar.superVar.values()
# ['one', 'two']

如果您想保持秩序,可以使用collections模块中的。

在Python中,赋值是语句,而不是表达式。不能将语句链接在一起。所以(1)是不可能的。
但是,您可以在类的_init _方法中使用来获取(2)中的行为:


为什么不为您的子变量创建一个字典,并使superVar成为子变量字典中的值列表

superVar = {'subVar1': 'a', 'subVar2': 'b'}
superVar['subVar1']
# 'a'
superVar['subVar2']
# 'b'
d = {'subVar1': 'value1', 'subVar2': 'value2'}
superVar = d.values()

这与Jeremy Bentham的答案基本相同

class T:

    def __init__(self):
        self.SuperVar = {'v1':'a', 'v2':'b'}
        print self.SuperVar.v1
        print self.SuperVar.v2

    def __setattr__(self, k, v):

        class SuperVar:
            def __setattr__(self, k, v):
                self.__dict__[k] = v

        if k == "SuperVar":
            self.__dict__["SuperVar"] = SuperVar()
            for k in v:
                self.__dict__["SuperVar"].__setattr__(k, v[k])
        else:
            self.__dict__[k] = v


t = T()

#1是不可能的#2是不可能的,但一个近似值可能与一个丑陋的黑客。为什么您觉得有必要这样做,而不仅仅是按顺序分别分配变量?子变量共同构成一个逻辑单元。e、 g.假设superVar表示一个电话簿条目,子变量是first name、last name等。因此我希望将对应于同一逻辑单元的子变量放在一起。我希望子变量名包含超级变量名,因为这些变量可能在类外单独修改。所以有人可以从外部指定superVar.v1='c'。我可以写完整的长名称,但这会让它看起来有点难看/笨拙。你可以用
superVar=['a','b']来做1);subVar1,subVar2=超变量谢谢你。我也在考虑这个问题,但是放弃了,因为我真的很想做(2)。我确实关心superVar中变量的顺序。我试图实现的基本目标是使代码紧凑且易于阅读。(顺便说一句,我并没有否决你的答案)。@如果你关心秩序,你可以用感谢海德罗。我不知道。我来看看。我最后用的是一台订购的电脑。它很好地解决了我的问题。请您编辑您对订购信息的答案(或至少在答案中提及),以便我将其标记为已接受的答案吗?@TheNoob补充道:)。我想补充一个例子,但我真的从来没有用过,只是以前见过。对不起,我知道关键字参数。然而,我有大量的变量。所以我的计划是在init中定义所有变量,然后类的用户可以重写他/她想要的变量。因此,我不能走这条路。