相关疑难解决方法(0)

为什么使用'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万
查看次数

如何在Python中设计代码?

我来自Java并学习Python.到目前为止,我发现非常酷,但很难适应,是没有必要声明类型.我知道每个变量都是一个指向对象的指针,但到目前为止我还无法理解如何设计我的代码.

例如,我正在编写一个接受2D NumPy数组的函数.然后在函数体中我调用了这个数组的不同方法(这是arrayNumpy中的一个对象).但是在将来假设我想使用这个函数,到那时我可能已经完全忘记了我应该作为一个类型传递给函数的东西.人们通常做什么?他们只是为此写文档吗?因为如果是这种情况,那么这涉及更多的打字,并且会引发关于不声明类型的想法的问题.

还假设我想在将来传递类似于数组的对象.通常在Java中,可以实现一个接口,然后让两个类来实现这些方法.然后在函数参数中,我将变量定义为接口类型.如何在Python中解决此问题或者可以使用哪些方法来实现相同的想法?

python

23
推荐指数
3
解决办法
3654
查看次数

标签 统计

python ×2

eval ×1