可能重复:
类__init __()函数内部和外部的变量
我注意到在Python中,人们以两种不同的方式初始化他们的类属性.
第一种方式是这样的:
class MyClass:
__element1 = 123
__element2 = "this is Africa"
def __init__(self):
#pass or something else
Run Code Online (Sandbox Code Playgroud)
另一种风格如下:
class MyClass:
def __init__(self):
self.__element1 = 123
self.__element2 = "this is Africa"
Run Code Online (Sandbox Code Playgroud)
哪个是初始化类属性的正确方法?
我已经设法使用SQLAlchemy中的批量插入,如:
conn.execute(addresses.insert(), [
{'user_id': 1, 'email_address' : 'jack@yahoo.com'},
{'user_id': 1, 'email_address' : 'jack@msn.com'},
{'user_id': 2, 'email_address' : 'www@www.org'},
{'user_id': 2, 'email_address' : 'wendy@aol.com'},
])
Run Code Online (Sandbox Code Playgroud)
我现在需要的是等同于更新的东西.我试过这个:
conn.execute(addresses.insert(), [
{'user_id': 1, 'email_address' : 'jack@yahoo.com', 'id':12},
{'user_id': 1, 'email_address' : 'jack@msn.com', 'id':13},
{'user_id': 2, 'email_address' : 'www@www.org', 'id':14},
{'user_id': 2, 'email_address' : 'wendy@aol.com', 'id':15},
])
Run Code Online (Sandbox Code Playgroud)
期望每行根据'id'字段进行更新,但它不起作用.我假设这是因为我没有指定WHERE子句,但我不知道如何使用字典中包含的数据指定WHERE子句.
有人能帮助我吗?
我有一个必须在 Windows 和 Linux 上运行的 python 程序。我通常将一些配置选项存储在程序目录的子目录中的文件中。
对于 Windows,我将其转换为 exe 并为其创建了一个安装程序。现在我有处理配置文件的问题。
保存配置文件的最佳位置是什么?我已经读过对于 Windowsos.environ['APPDATA']+'myAppName'是必须使用的路径。这是正确的吗?它是标准的吗?它是否可以在所有版本的 Windows 中运行,至少从 XP 开始(至少在英语和西班牙语中)?
PD:我对使用 ConfigParser 不感兴趣。配置文件是我自己的格式,我有从中读取/写入的工作代码。
我正在编写一个内核模块,在其中实现一些将从我修改过的另一个模块中使用的函数。测试时系统崩溃。我收到“原子调度”错误。
经过调试,发现atomic_set()调用a时系统崩溃了。这意味着我正在从非原子函数调用原子函数?在这种情况下我不能使用atomic_set()吗?我应该用什么来代替?
另外,正如我所说,我修改了一些原始内核文件来调用我的函数。我怎么知道我正在工作的地方是否是原子代码?
编辑:添加实际代码
在net/netfilter/ipvs/ip_vs_core.c第 451 行中,我调用我的函数:
my_callback(svc, skb);
Run Code Online (Sandbox Code Playgroud)
然后,在另一个文件中我有:
int my_callback(struct ip_vs_service *svc, struct sk_buff *skb)
{
int swto;
printk(KERN_INFO "callback called \n");
swto = swtoing(svc);
return swto;
}
Run Code Online (Sandbox Code Playgroud)
我的swtoing()函数有点长,但是我已经调试了很多,并且发现如果我用swtoing()...atomic_set()注释其中的一行,系统不会崩溃。
有什么帮助吗?
编辑2:更多信息
我意识到我正在修改的内核模块充满了类似的spin_locks东西......所以我认为(如果我错了请原谅我)我必须在我正在创建的函数中做一些事情,以保持锁定/原子的东西......但我不知道是什么:(
我有一个 Django 视图,它扩展了generics.ListAPIView. 它适用于获取请求,但是由于 URL 的字符限制,现在我需要通过 POST 发送请求。这是相同的请求,我唯一需要更改的是 POST 方法。我当前的代码非常简单:
class MyClass(generics.ListAPIView):
serializer_class = MySerializer
paginate_by = 1
def get_queryset(self):
queryset = SomeClass.objects.all()
# do some filtering
Run Code Online (Sandbox Code Playgroud)
我如何向此类添加 POST 支持?
特别是将.config文件从Kernel 3.0.1复制到内核3.2.1是否安全?
我有一个包含16个正方形的pygtk表,每个正方形包含一个标签.标签名称为:label1,label2,label3,...,label16.
我也有一个每n秒触发一次的计时器.当计时器被触发时,其中一个正方形被突出显示(只需将其字体大小设置为18,将其余字体大小设置为12).
如果只有3个标签,代码将是这样的:
def update_grid(self):
if self.timer_id is not None:
self.__actual_choice = (self.__actual_choice % 16)+1
if self.__actual_choice == 1:
self.label1.modify_font(self.__font_big)
self.label2.modify_font(self.__font_small)
self.label3.modify_font(self.__font_small)
elif self.__actual_choice == 2:
self.label1.modify_font(self.__font_small)
self.label2.modify_font(self.__font_big)
self.label3.modify_font(self.__font_small)
elif self.__actual_choice == 3:
self.label1.modify_font(self.__font_small)
self.label2.modify_font(self.__font_small)
self.label3.modify_font(self.__font_big)
Run Code Online (Sandbox Code Playgroud)
但是有16个标签,代码将是巨大的.我想知道在python中是否有办法做类似的事情:
self.(label+"i").modify_font(self.__font_small)
Run Code Online (Sandbox Code Playgroud) 对一个while/for循环使用break指令是否安全list_for_each_entry(在Linux内核中)?
举例:
list_for_each_entry(obj1, vars, list) {
...
while(j < k)
{
...
if(k >= MAX_ITERATIONS) break; // break the while
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
while循环是否会按预期被破坏或被list_for_each_entry破坏?
python ×5
linux-kernel ×3
c ×2
atomic ×1
attributes ×1
class ×1
django ×1
http ×1
linux ×1
orm ×1
sqlalchemy ×1
windows ×1