标签: variable-assignment

意外的对象分配

class TrafficData(object):
    def __init__(self):
        self.__data = {}
    def __getitem__(self, epoch):
        if not isinstance(epoch, int):
            raise TypeError()
        return self.__data.setdefault(epoch, ProcessTraffic())
    def __iadd__(self, other):
        for epoch, traffic in other.iteritems():

            # these work
            #existing = self[epoch]
            #existing += traffic

            # this does not
            self[epoch] += traffic # here the exception is thrown

        return self
Run Code Online (Sandbox Code Playgroud)

在上面修剪过的代码中,我不期望一个项目分配,但显然在标记的行上发生了一个,并抛出以下异常:

  File "nethogs2.py", line 130, in __iadd__
    self[epoch] += traffic
TypeError: 'TrafficData' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

但是,如果我改为使用前面两条注释掉的行,则不会抛出任何异常.

在我看来,2应该以相同的方式表现.self[epoch]返回对对象的引用,并通过该对象对其进行修改__iadd__.我在这里误解了什么?我经常在使用词典时遇到这个问题.

Update0

值得指出的是,self.__data已经__iadd__ …

python dictionary variable-assignment

0
推荐指数
1
解决办法
186
查看次数

C struct-to-struct赋值 - 目标结构中的值不正确

我在头文件中有ac结构: -

typedef struct sample
{
char *member1;
char **member2;
long *member3;
unsigned int member4;
} example;
Run Code Online (Sandbox Code Playgroud)

我在同一个头文件中声明了一个默认的typedef变量: -

const example defaultValue;
Run Code Online (Sandbox Code Playgroud)

defaultValue的定义在c文件中: -

const example defaultValue = 
{
NULL,
NULL,
NULL,
99
};
Run Code Online (Sandbox Code Playgroud)

现在在一个不同的c文件中,如果我这样做,

example example1 = defaultValue;
Run Code Online (Sandbox Code Playgroud)

所有成员都按预期分配NULL - 但是"unsigned int member4"被赋值为0而不是99.这很奇怪,因为defaultValue.member4是99.有人可以解释一下这种不寻常的行为吗?有没有更好的方法来进行默认的struct初始化?

c structure variable-assignment

0
推荐指数
1
解决办法
592
查看次数

如何在Python中为整个(或部分)列表分配一个值?

我有List = [0, 1, 2, 3],我想给他们所有人分配一个数字,5 : List = [5, 5, 5, 5]. 我知道我可以List = [5] * 4轻松做到.但我也希望能够将最后3个元素分配给6.

List = [5, 5, 5, 5]

YourAnswer(List, 6, 1, 3)

>> [5, 6, 6, 6]
Run Code Online (Sandbox Code Playgroud)

哪里YourAnswer是一个功能.

任何类似的东西都会有所帮助.更喜欢避免循环.但如果没有已知的可能性,请告诉我.

python list variable-assignment

0
推荐指数
1
解决办法
2095
查看次数

重新分配参数(本地)是否不合适?

C#社区是否存在修改参数的广泛厌恶?例如,一个流行的样式检查器会抱怨下面的参数重新分配方面吗?

public void Create(Template template = null) {
    if (template == null) template = GetDefaultTemplate();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

对此的替代方案如下,但假设代码块适当小,则可能不是更清楚:

public void Create(Template template = null) {
    var theActualTemplate = template ?? GetDefaultTemplate();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我为这个肯定已经厌倦/已经回答的问题道歉,但奇怪的是我找不到任何东西.我试着查看一些C#样式指南(包括这里的所有指南:c#的样式指南?),但没有发现这个问题.也许这不是问题?

如果您有相对权威的来源,我很乐意听到.

c# parameters variable-assignment

0
推荐指数
1
解决办法
109
查看次数

PHP:如果语句在变量声明中

我知道在像C#这样的语言中你可以使用if like语句(我知道这些语句有一个名字但不记得它叫什么)有点像这样:

var variable = this ? true : false;

(我明白这是不正确的,但是我已经做了一段时间了,如果错了请纠正).

我的问题是:你可以在PHP中做同样的事情,如果是这样的话怎么样?

(该网站已在WordPress中构建,但这是关于wp_*功能的通用PHP变量赋值的问题)

我希望能够声明一个变量:

$current_user = if (is_user_logged_in()) {
    wp_get_current_user();
} else {
    null;
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何让这个单线变量去除?

php variables variable-assignment

0
推荐指数
1
解决办法
1761
查看次数

可以替换std :: thread对象吗?

根据我在C++在线文档中收集的内容,分配给连接的std :: thread对象应该调用它的析构函数并表示合法的操作.是这样的吗?

这里有一些例子来说明我的意思:

#include <thread>
#include <vector>

using namespace std;

int main()
{
    vector<thread> tvec;
    for(int = 0; i < 3; ++i)
    {
        tvec.push_back(thread(foo));
    }
    for(size_t i = 0; i < 3; ++i)
    {
        tvec[i].join();
        tvec[i] = thread(foo); // is this ok?
    }
    for(auto& t : tvec)
    {
        t.join();
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ variable-assignment stdthread

0
推荐指数
1
解决办法
305
查看次数

我们不能在python中执行if(y = Foo())> 2的操作吗?

我是python的新手.在C/C++中,在while或if语句中,我经常进行变量赋值.以下是C++中的一个简单示例代码:

#include <iostream>

int Increment(const int x) {
  return (x + 1); 
}

int main(void) {
  int x = 2, y;
  while ((y = Increment(x)) > 2) {
    std::cout << "y is larger than 2" << std::endl;
  }

  return (0);
}
Run Code Online (Sandbox Code Playgroud)

但是以下python代码不起作用:

#!/usr/bin/python

def Increment(x):
  return x + 1

def main():
  x= 2
  while (y = Increment(x)) > 2:
    print "y is larger than 2"

if __name__ == "__main__"
  main()
Run Code Online (Sandbox Code Playgroud)

错误消息如下:

   while (y = Increment(x)) > 2:
          ^
SyntaxError: invalid …
Run Code Online (Sandbox Code Playgroud)

python variable-assignment conditional-statements

0
推荐指数
1
解决办法
122
查看次数

如何检查对象是否已分配给整数变量

我将对象和整数值分配给整数变量:

MyIntegerValue := Integer(MyObject);
MyIntegerValue := 2;
MyIntegerValue := 500;
...
Run Code Online (Sandbox Code Playgroud)

如何检查是否已为MyIntegerValue分配了有效对象?

delphi casting variable-assignment

0
推荐指数
1
解决办法
888
查看次数

“ lambda不能有赋值语句”-那么“ foo = lambda x:x * 2”为什么合法?

我正在阅读Steven Lott撰写的《 Functional Python Programming》,这是一本关于“功能性”地使用Python而不是以面向对象的方式使用的书,其中大部分示例着重于探索性数据分析。

洛特说Lamda不能有赋值语句。但是在同一页面上,他为变量分配了一个lambda函数:

>>mersenne = lambda x: 2**x-1
>>mersenne(17)
 131071
Run Code Online (Sandbox Code Playgroud)

那怎么不是任务陈述呢?我还缺少其他“分配”的感觉吗?

python lambda variable-assignment

0
推荐指数
1
解决办法
706
查看次数

为什么我可以像这样将新字符串重新分配给C中的char指针(ch * string =“ hello”; string =“ assign”;)

我想知道以下代码为何合法

char *string = "hello";
string = "changed";
string = "changed again";
Run Code Online (Sandbox Code Playgroud)

这不会对编译器造成任何问题。

但是我给人的印象是,初始化为指针的char数组(char * string与char string []相对)是只读的,不能被覆盖吗?

c arrays string pointers variable-assignment

0
推荐指数
2
解决办法
81
查看次数