小编sta*_*art的帖子

Python:想要使用字符串作为切片说明符

假设我有一个S字符串 的变量"1:3"(或者就此而言"1",或者"1:"或者":3")我希望将它用作列表 上的切片说明符L.你不能简单地做,L[S]因为切片所需的args是"int:int".

现在,我目前有一些丑陋的代码解析S它的两个组成部分int并处理所有边缘情况(其中4个)以提出正确的切片访问,但这只是简单的丑陋和unpythonic.

我如何优雅地使用字符串S并将其用作切片说明符?

python string slice specifier

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

需要使用JSON传递REST v2 API的Jasper Reports参数的示例

当我查看将参数传递给Jasper Report REST 2 API的文档时:http://community.jaspersoft.com/documentation/jasperreports-server-web-services-guide/v550/running-report-asynchronously我看到了我需要一个"参数"字典.链接中的示例显示了XML并不是那么有用,因为它不清楚具体的JSON应该是什么样子.我能找到的最接近的链接是:http://community.jaspersoft.com/documentation/jasperreports-server-web-services-guide/v56/modifying-report-parameters.现在,我将相应的内容发送到服务器(以及我能想到的所有其他排列),然后我继续得到"400 Client Error:Bad Request".我真的可以使用python代码的确切示例来生成所需的"参数"参数,例如"my_parameter_1 ="test_value_1".

这是我目前的POST数据(为简洁起见,缺少一些参数).我知道这是正确的,因为如果我省略"参数"参数,报告工作正常:

    {
      'outputFormat': 'pdf', 
      'parameters': [{'name': 'ReportID', 'value': ['my_value_1']}], 
      'async': 'true', 
      'pages': '', 
      'interactive': 'false'
    }
Run Code Online (Sandbox Code Playgroud)

python parameters rest json jasperserver

4
推荐指数
2
解决办法
7332
查看次数

python - 尝试覆盖__getattr__以动态添加类,但只有一些工作

我试图在运行时向现有类添加一个新类(使用"type(...)").我也试图覆盖新的类'__getattr__,以便我可以对不在新类中的属性执行自己的行为.例如,我有类foo,我添加类"工具",我希望foo.tool.test做我自己的事情.下面的代码有效但只是部分代码.如果我显式调用__getattr__,它可以工作(参见第一次打印),但是当我引用foo.tool.test时,我的被覆盖的__getattr__没有被调用,并且引发了一个属性错误.

非常感谢您的帮助.

class Foo(object):
    def __init__(self):
        self.NameList=[]
        # add new class to ourself
        self.tool = type('tool', (object,), {} )
        # override new class' __getattr__ with call to ourself
        setattr(self.tool, "__getattr__", self.__getattr__ )
        # add one well known test name for now
        self.NameList.append( "test" )

    # should be called by our newly added "tool" object but is only called sometimes...
    def __getattr__(self, attr):
        # print( "__getattr__: %s" % attr )
        if( attr in self.NameList ):     
            return( 99 )
        raise AttributeError("--%r object …
Run Code Online (Sandbox Code Playgroud)

python class dynamic getattr

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

我希望能够动态地向python类添加函数,而不是事先知道它们的名字

假设我有一个名单.我希望能够动态地将这些实例函数添加到类实例中.我知道类型.MethodType但我从这里到这里有点新手.基本上我想做的是:

class foo( object ):
     def __init__(self):
         pass

f = foo()
names = ["a","b","c"]
for name in names:
    add name() to f  # not sure what to do here
    # what I wanted added to instance "f" is this for each name:
    def name(self, *args, **kwargs):
        print( "My name is %s" % inspect.stack()[0][3]   )       
        print( "__called, args=%r, **kwargs=%r" % (args, kwargs) )

f.a() # ==> calls f.a()
f.b(1,2,3) # calls f.b(1,2,3 )and so on
Run Code Online (Sandbox Code Playgroud)

python methods class dynamic instance

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