小编Nik*_*win的帖子

为什么使用'eval'是一种不好的做法?

我正在使用以下课程轻松存储我的歌曲数据.

class Song:
    """The class to store the details of each song"""
    attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
    def __init__(self):
        for att in self.attsToStore:
            exec 'self.%s=None'%(att.lower()) in locals()
    def setDetail(self, key, val):
        if key in self.attsToStore:
            exec 'self.%s=val'%(key.lower()) in locals()
Run Code Online (Sandbox Code Playgroud)

我觉得这比写出一个if/else块更具可扩展性.但是,eval似乎被认为是一种不良做法并且使用起来不安全.如果是这样,任何人都可以向我解释为什么并告诉我一个更好的方法来定义上面的类?

python eval

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

将Emacs设置为并排拆分缓冲区

很多Emacs功能会自动拆分屏幕.然而,它们都这样做,使得窗户是一个在另一个之上.是否有任何方法可以将它们分开,以便默认情况下它们是并排的?

emacs

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

Zope接口的目的?

我已经开始在我的代码中使用Zope接口,截至目前,它们实际上只是文档.我使用它们来指定类应具有的属性,在适当的类中显式实现它们,并在我期望的位置显式检查它们.这很好,但我希望他们在可能的情况下做更多的事情,比如实际验证该类是否已经实现了接口,而不仅仅是验证我已经说过该类实现了接口.我已经阅读了几次zope wiki,但仍然看不到比我目前正在做的更多的接口使用.所以,我的问题是你还可以使用这些接口,以及如何使用它们.

python zope interface zope.interface

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

习惯从类型继承元类?

我一直在尝试理解python元类,所以一直在尝试一些示例代码.据我所知,Python元类可以是任何可调用的.所以,我可以让我的元类像

def metacls(clsName, bases, atts):
    ....
    return type(clsName, bases, atts)
Run Code Online (Sandbox Code Playgroud)

但是,我看到很多人用以下方式编写他们的元类:

class Metacls(type):
    def __new__(meta, clsName, bases, atts):
        ....
        return type.__new__(meta, clsName, bases, atts)
Run Code Online (Sandbox Code Playgroud)

据我所知,这些都会做同样的事情.是否有任何理由使用基类?这是习惯吗?

python metaclass

29
推荐指数
1
解决办法
5947
查看次数

什么是区分字符串和列表的Pythonic方法?

对于我的程序,我有很多地方,对象可以是字符串或包含字符串和其他类似列表的列表.这些通常是从JSON文件中读取的.他们都需要区别对待.现在,我只是使用isinstance,但这并不是最狡猾的方式,所以有没有人有更好的方法呢?

python

27
推荐指数
3
解决办法
6577
查看次数

Emacs的类似矩阵的空闲动画

我的emacs设置为在黑色背景上显示绿色文本.在看到它之后,一位朋友说我刚刚接受它,因为它给出了类似Matrix的外观.所以,现在我要做的是为它实现一个空闲动画,就像在矩阵中一样,更改文本会在屏幕上显示.就像在区域输出功能中一样,它应该在emacs闲置一段时间后运行.怎么做?

emacs

13
推荐指数
1
解决办法
4279
查看次数

从emacs运行py.test

我想要的是Cc Cc运行py.test并在另一个缓冲区中显示输出,如果正在编辑的文件的名称以test_开头,否则通常运行py-execute-buffer.我该怎么做?我正在使用带有python-mode的emacs 23.1.1,并且可以从命令行访问py.test.

python emacs pytest

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

使Emacs的Python交互模式突出显示和缩进

我正在使用带有python-mode 5.1.0的Emacs 23来编辑我的python程序.有时在编写程序时我想运行一个小的一次性python脚本,所以我运行了交互式移动(抄送!).这很好,但它既没有缩进也没有突出显示代码,如果我尝试在其中运行python模式,它就不再评估了.那么,如何将其设置为缩进和突出显示?

python emacs

6
推荐指数
1
解决办法
1080
查看次数

我应该将哪个VCS用于Google代码?

我即将开始一个项目,并考虑使用Google Code来托管它.它提供了使用Mercurial或SVN进行版本控制的选项.我以前从未使用过VCS,并且想知道哪一个更容易使用.

该项目涉及两个主要程序员,但其他一些可能会贡献少量.它主要是在python中,我们使用Emacs作为主编辑器.我们都使用Windows操作系统.

svn version-control mercurial google-code

5
推荐指数
1
解决办法
561
查看次数

适用于iPod同步的优秀Python库

我正在制作音乐应用程序,并希望能够从我的应用程序中与iPod同步.有没有人有任何使用python的经验,如果是这样你会推荐什么?

python ipod

5
推荐指数
1
解决办法
872
查看次数