相关疑难解决方法(0)

如何在Python中创建常量?

有没有办法在Python中声明一个常量?在Java中,我们可以用这种方式创建常量值:

public static final String CONST_NAME = "Name";
Run Code Online (Sandbox Code Playgroud)

Python中上述Java常量声明的等价物是什么?

python constants

903
推荐指数
23
解决办法
91万
查看次数

如何从邪恶的程序员那里保护python类变量?

如何保护我的变量免受此类攻击:

MyClass.__dict__ = {}
MyClass.__dict__.__setitem__('_MyClass__protectedVariable','...but it is not')
Run Code Online (Sandbox Code Playgroud)

上面改变了变量字典,之后是孩子们玩改变所有变量.上线对于此工作至关重要.如果您的字典__setitem__被调整如下,则上述方法无效.

我想强制用户使用我的方法setProtectedVariable(value)来更改变量,但我似乎没有办法在Python 2.7中这样做.有任何想法吗?

如果您从下面的代码中找到其他类似的漏洞,我也很感激(我注意到我还应该在我的inspect.stack办理登机手续中添加文件名和行号myDict.__setitem__).

这是我到目前为止所尝试的:

import inspect

class ProtectionTest:

    __myPrivate = 0

    def __init__(self):
        md = myDict()
        setattr(self,'__dict__', md)

    def __setattr__(self, name, val):     
        if name == '__myPrivate':
            print "failed setattr attempt: __myPrivate"
            pass
        elif name == '_ProtectionTest__myPrivate':
            print "failed setattr attempt: _ProtectionTest__myPrivate"  
            pass
        elif name == '__dict__':
            print "failed setattr attempt: __dict__"
            pass
        else: 
            self.__dict__[name] = val             

    def getMyPrivate(self):
        return self.__myPrivate

    def setMyPrivate(self, myPrivate): …
Run Code Online (Sandbox Code Playgroud)

python dictionary private class protected

5
推荐指数
3
解决办法
2794
查看次数

标签 统计

python ×2

class ×1

constants ×1

dictionary ×1

private ×1

protected ×1