小编fij*_*ron的帖子

如何在python中从变量参数(kwargs)设置类属性

假设我有一个带有构造函数(或其他函数)的类,它接受可变数量的参数,然后有条件地将它们设置为类属性.

我可以手动设置它们,但似乎变量参数在python中很常见,应该有一个共同的习惯用法.但我不确定如何动态地这样做.

我有一个使用eval的例子,但这几乎不安全.我想知道这样做的正确方法 - 也许是lambda?

class Foo:
    def setAllManually(self, a=None, b=None, c=None):
        if a!=None: 
            self.a = a
        if b!=None:
            self.b = b
        if c!=None:
            self.c = c
    def setAllWithEval(self, **kwargs):
        for key in **kwargs:
            if kwargs[param] != None
                eval("self." + key + "=" + kwargs[param])
Run Code Online (Sandbox Code Playgroud)

python

93
推荐指数
5
解决办法
7万
查看次数

你可以使用PHP filter_var()和filter_input()的自定义过滤器吗?

PHP过滤器非常酷,但如果过滤器与您想要的不匹配,您会怎么做?你能创建一个自定义过滤器吗?

php

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

如何正确访问静态成员类?

我有两个类,并希望在另一个类中包含一个类的静态实例,并通过第一个类访问第二个类中的静态字段.

这样我可以使用相同名称的不同实例.

Class A 
{
    public static package1.Foo foo;
}

Class B 
{
    public static package2.Foo foo;
}


//package1
Foo 
{
    public final static int bar = 1;
}

// package2
Foo
{
    public final static int bar = 2;
}

// usage
assertEquals(A.foo.bar, 1);
assertEquals(B.foo.bar, 2);
Run Code Online (Sandbox Code Playgroud)

这有效,但我得到一个警告"静态字段Foo.bar应该以静态方式访问".有人可以解释为什么会这样,并提供"正确"的实施.

我意识到我可以直接访问静态实例,但是如果你有一个很长的包层次结构,那就太丑了:

assertEquals(net.FooCorp.divisions.A.package.Foo.bar, 1);
assertEquals(net.FooCorp.divisions.B.package.Foo.bar, 2);
Run Code Online (Sandbox Code Playgroud)

java static

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

标签 统计

java ×1

php ×1

python ×1

static ×1