小编Sha*_*obe的帖子

组织类属性,构造函数参数和子类构造函数默认的大多数"pythonic"方式?

作为Python 2的新手,我不确定如何以最"pythonic"的方式组织我的类文件.我不会问这个问题,但事实上Python似乎有很多方法可以做我和我以前习惯的语言非常不同的方法.

最初,我只是在处理类我通常用C#或PHP处理它们的方式,这当然让我在最终发现可变值的时候到处绊倒了:

class Pants(object):
    pockets = 2
    pocketcontents = []

class CargoPants(Pants):
    pockets = 200

p1 = Pants()
p1.pocketcontents.append("Magical ten dollar bill")
p2 = CargoPants()

print p2.pocketcontents
Run Code Online (Sandbox Code Playgroud)

哎呀!没想到!

我花了很多时间在网上搜索并通过其他项目的来源获取有关如何最好地安排我的课程的提示,我注意到的一件事似乎是人们似乎声明了很多他们的实例变量 - 可变或否则 - 在构造函数中,并且非常厚实地堆积默认构造函数参数.

经过这样的发展一段时间之后,我仍然对我不熟悉的事情略有不解.考虑到python语言的长度使事情看起来更直观和明显,在我有很多属性或很多默认构造函数参数的少数情况下,对我来说似乎完全奇怪,特别是当我子类化:

class ClassWithLotsOfAttributes(object):
    def __init__(self, jeebus, coolness='lots', python='isgoodfun', 
             pythonic='nebulous', duck='goose', pants=None, 
             magictenbucks=4, datawad=None, dataload=None,
             datacatastrophe=None):

        if pants is None: pants = []
        if datawad is None: datawad = []
        if dataload is None: dataload = []
        if datacatastrophe is None: datacatastrophe = []
        self.coolness = coolness …
Run Code Online (Sandbox Code Playgroud)

python python-2.6

17
推荐指数
1
解决办法
5001
查看次数

如何使用PHP/apache访问原始HTTP请求数据?

我想知道是否有办法获得在apache上运行的PHP中的原始HTTP请求数据,该数据不涉及使用任何其他扩展.我已经在手册中看到过HTTP功能,但是我没有在我的环境中安装扩展的选项.

虽然我可以从$ _SERVER访问信息,但我希望看到原始请求与发送到服务器的完全相同.PHP会根据自己的数组键样式来管理标题名称,例如.Some-Test-Header变为HTTP_X_SOME_TEST_HEADER.这不是我需要的.

php apache

16
推荐指数
2
解决办法
2万
查看次数

有没有比官方网站更好的Twisted的详尽文档?

我一直在看扭曲一段时间.它看起来很有趣 - 在编写服务器时,它似乎是一种利用大量功能的好方法.不幸的是,尽管使用twisted.web编写了一些Web服务器(从阅读其他人的来源和一本极其过时的O'Reilly书籍),我从未真正感觉到我已经达成了与扭曲的亲和关系......一定程度的理解这实际上给了我一些它似乎有的力量.

我认为我需要一些好的文档才能达到更好的理解水平 - 我根本没有时间对源代码进行深入研究,SO上的其他线程也提到了twisted的官方文档,这些文档最多也是补丁,最糟糕的是,偶尔也会过时.

还有其他更彻底,更宽容,更有用的东西,还是我坚持使用另一款经典,无聊的STFU和RTFM,尽管TFM没用?


更新

在回应JP Calderone的评论时,我只是有一个婊子,在某种程度上我猜我是,但我认为问题的广度是有效的考虑到Twisted的广度和价值以及缺乏明显,全面的文档.我有一些想要调查的事情,但是我已经得到了好的结果,只是将事情放在一起,并且当我在寻找更深入,更广泛的理解时,要求具体细节,在我看来,没有帮助.

立即弹簧想到的对比是Django的......我可以(很透彻)Django文档阅读过并不见得知道怎么做一切可以马上做的,但我可以得到一个很好的概述如何我可以做的一切我需要这样做,并确切知道时机到来的确切位置.

python twisted

14
推荐指数
2
解决办法
610
查看次数

在PHP中加密非常短的字符串的最佳方法是什么?

我想加密字符串,这些字符串可能只有大约三个或四个字符,但运行到大约二十个字符.散列函数(md5,sha1,crypt等)不适合,因为我也希望能够解密信息.该mcrypt的扩展有一个可能性的彻底艰巨的阵列.

有没有人对安全加密短字符串的最佳方法有什么想法?为什么?有没有人有任何关于将休闲程序员引入实际加密方案的材料的链接?

php encryption

12
推荐指数
3
解决办法
9269
查看次数

如何在PHP中安全地执行与金钱相关的计算?

我正在研究一些报告输出脚本,需要对一些货币值进行一些基本的计算.

我知道浮点运算的局限性,但输入值都是十进制格式,所以如果我使用算术运算符,PHP会将它们转换为浮点数.

那么处理这些数字的最佳方法是什么?我应该使用BCMath吗?是否有类似于.NET中的Decimal的东西?或者如果我强制转换为int,使用算术运算符是否安全?

php finance

12
推荐指数
2
解决办法
4974
查看次数

具有混合文本/ ID搜索的jQuery UI自动完成

我在使jQuery的自动完成小部件为我工作时遇到了很多麻烦.我正在使用服务器中的键/值对列表.

我有以下要求:

如果用户从窗口小部件中选择一个值,我想将ID传递给服务器.

如果用户没有选择值并输入原始文本,或者修改已经选择的值,我希望清除ID字段,只删除要发送到服务器的原始文本.

假设someAjaxFunction返回自动完成小部件所期望的对象数组:{label:label, value:key}.

最初我像这样设置自动完成小部件:

$(input).autocomplete({
    source: sourceFunction,
    minLength: 1
});
Run Code Online (Sandbox Code Playgroud)

即使将鼠标悬停在其中一个项目上,更改选择也会将$(输入)引用的文本框中的文本更改为基础键,而不是标签.从用户交互的角度来看,这是非常不受欢迎的 - 事实上,我正在研究这个问题的原因是因为我正在构建的网站的用户一直对他们输入的文本感到困惑,似乎变成了随机数!

我在文本框下添加了一个隐藏字段并实现了select()和focus()事件,以便隐藏ID,如下所示:

$(input).autocomplete({
    source: sourceFunction,
    minLength: 1
    focus: function(event, ui) {
        $(idField).val(ui.item.value);
        $(this).val(ui.item.label);
        return false;
    },
    select: function(event, ui) {
        $(idField).val(ui.item.value);
        $(this).val(ui.item.label);
        return false;
    },
    minLength: 1
});
Run Code Online (Sandbox Code Playgroud)

当用户坚持使用自动完成下拉列表提供的脚本时,这很有效.该ID被隐藏并正确提交给服务器.不幸的是,如果用户想要在框中输入一些自由格式文本并根据该值进行搜索,则不会重置ID字段,并且先前选择的ID将提交给服务器.这也很令人困惑.

jQuery UI自动完成文档列出了一个change事件,并声明参数的item属性ui将设置为所选项.我想我可以在按键上重置隐藏的id字段,并在更改自动完成时重新填充ID.不幸的是,除了按键事件捕获一大堆不应该重置ID 的按键之外,return false上述select事件中管理文本框中文本所必需的语句可以防止change事件正确分配ui.item.

所以现在我被卡住了 - 我真的不知道还有什么我可以尝试制作它看起来应该默认支持的小部件支持功能.要么这个过程比它应该更复杂,要么我错过了一些非常明显的东西.我已经完成了所有可用的事件和所有示例,然后空手而归.实际上,即使是jQuery UI页面上的"自定义数据和显示"示例也会遇到此问题.

我可以在服务器端添加一些黑客来覆盖这个,但我真的更愿意能够在客户端级别执行此操作.

我也更喜欢坚持使用jQuery UI自动完成小部件而不是切换到另一个小部件.

jquery jquery-ui jquery-ui-autocomplete

11
推荐指数
1
解决办法
1万
查看次数

如何使用sphinx更改LaTeX PDF输出中的代码示例字体大小?

我发现sphinx生成的PDF中的默认代码示例字体太大了.

我已经尝试在生成的.tex文件中插入\tiny代码块上方的字体大小命令,但它只是使代码块上方的行变得很小,而不是代码块本身.

我不知道还能做什么 - 我是LaTeX的绝对初学者.

python documentation latex python-sphinx

9
推荐指数
1
解决办法
3754
查看次数

查询MySQL information_schema数据库是查找相关表的好方法吗?

我有一个表,在许多其他表上由外键引用.在我的程序中,如果我想删除其中一行,我需要首先搜索依赖项并将它们呈现给用户 - "此对象依赖于表y中的x,表q中的z等".我还希望具有该表的外键的表的数量随着时间的推移而显着增长.

information_schema数据库是搜索所有依赖项的好方法吗?我试图查询它以检索所有具有我的表的外键的表的列表,然后迭代结果并从每个表中选择外键值与用户试图删除的值匹配的所有条目.我的查询如下:

SELECT * FROM `KEY_COLUMN_USAGE` kcu
LEFT JOIN TABLE_CONSTRAINTS tc
ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
WHERE tc.CONSTRAINT_TYPE='FOREIGN KEY'
AND (kcu.REFERENCED_TABLE_SCHEMA='db')
AND (kcu.REFERENCED_TABLE_NAME = 'testtable')
Run Code Online (Sandbox Code Playgroud)

这对于确定我需要搜索的表格非常有效,但是它非常慢.查询最多需要大约1到2秒才能在我的开发机器上执行,当我在生产服务器上运行它时会减少很多,但仍然会很慢.

我需要知道以这种方式使用information_schema是不是一个坏主意.如果没有,我如何从查询中提取更好的性能.我使用的查询是否可靠或有更好的方法吗?如果是这样,我应该如何从可维护性的角度解决这个问题.

mysql

8
推荐指数
1
解决办法
2697
查看次数

是否可以在Objective C中创建CLHeading对象?

我正在尝试实现一个插入式位置管理器子类,允许我将标题数据传递给iphone模拟器,类似于unimotion/accelerometer hack.不幸的是,根据CLHeading文档,一切都是只读的,并且没有允许设置标题的初始化器.有没有办法强制创建一个填充的CLHeading实例?

iphone objective-c iphone-sdk-3.0

7
推荐指数
1
解决办法
1224
查看次数

MySQL外键 - 如何跨表强制执行一对一?

如果我在MySQL中有一个代表基类的表,并且我有一堆表来表示派生类中的字段,每个表都用外键引用基表,有没有办法获取MySQL强制派生表和基表之间的一对一关系,还是必须在代码中完成?

使用以下快速'n'脏模式作为示例,有没有办法让MySQL确保product_cd和product_dvd中的行不能共享相同的product_id?有没有更好的方法来设计架构以允许数据库强制执行此关系,或者它是否根本不可能?

CREATE TABLE IF NOT EXISTS `product` (
    `product_id` int(10) unsigned NOT NULL auto_increment,
    `product_name` varchar(50) NOT NULL,
    `description` text NOT NULL,
    PRIMARY KEY  (`product_id`)
) ENGINE = InnoDB;

CREATE TABLE `product_cd` (
    `product_cd_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
    `product_id` INT UNSIGNED NOT NULL ,
    `artist_name` VARCHAR( 50 ) NOT NULL ,
    PRIMARY KEY ( `product_cd_id` ) ,
    INDEX ( `product_id` )
) ENGINE = InnoDB;

ALTER TABLE `product_cd` ADD FOREIGN KEY ( `product_id` ) 
    REFERENCES `product` (`product_id`) …
Run Code Online (Sandbox Code Playgroud)

mysql

6
推荐指数
2
解决办法
2万
查看次数