Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Googleads python模块-如何创建类实例_Python_Google Dfp - Fatal编程技术网

Googleads python模块-如何创建类实例

Googleads python模块-如何创建类实例,python,google-dfp,Python,Google Dfp,我正在使用python 2.7和google dfp api python模块(googleads-4.4.0) doubleclick for publishers文档()描述了CustomTargetingValue之类的“类型”(也称为类)。我想创建此类类的新实例,以便填充它们并调用API可访问的方法,如createCustomTargetingValues() 我希望通过使用类名和“call”方法创建新实例 newVal = CustomTargetingValue() 。。。但这会产

我正在使用python 2.7和google dfp api python模块(googleads-4.4.0)

doubleclick for publishers文档()描述了CustomTargetingValue之类的“类型”(也称为类)。我想创建此类类的新实例,以便填充它们并调用API可访问的方法,如createCustomTargetingValues()

我希望通过使用类名和“call”方法创建新实例

newVal = CustomTargetingValue()
。。。但这会产生一个命名错误

NameError: name 'CustomTargetingValue' is not defined
我尝试过使用dir()、vars()和inspect进行深入研究,但找不到一种方法来限定名称,例如googleads.CustomTargetingValue、suds.sudsobject.CustomTargetingValue

作为一种解决方法,我可以使用类似getCustomTargetingValuesByStatement()的DFP查询来返回所需类型的现有对象,使用“type”获取其类,然后使用call方法

newVal=type(existingVal)()
我同样可以使用复制模块来复制对象,但这两种方式都像是黑客攻击


很明显,我在这里忽略了一些非常明显的东西——正确的方法是什么?

我找到的最接近的解决方案就是用适当的
xsi_类型组成一个字典,并确保提供了所有必填字段。这个字典随后被提供给正在进行的DFPAPI调用

例如,我需要添加一个新的顶级KVP(CustomCriteriaSet),我使用以下代码:

new_kvp = {
    'xsi_type': 'CustomCriteriaSet',
    'logicalOperator': 'AND',
    'children': {
        'xsi_type': 'CustomCriteria',
        'keyId': key_id,
        'valueIds': [value1_id,value2_id],
        'operator': 'IS_NOT'
        }
    }
l.targeting['customTargeting'] = new_kvp
updated_li.append(l)
...
li_service.updateLineItems(updated_li)
...
虽然我在一个PHP示例中发现,该代码只是调用了
CustomCriteriaSet
call,但我在Python示例中找不到类似的代码。可能只是一个助手类,但我还没有检查PHP示例


不管怎样,这个解决方案对我有效。所以我就用这个。

嗨,这个问题有什么解决办法吗?我有点像是用同一台自动取款机。不,令人惊讶的是不是!我发现我通常在处理从getXbyStatement调用中获得的对象,所以没关系。否则,我要么调用获取模板对象并更改值,要么根据代码示例从头构建一个模板对象。如果你发现更多,请告诉我!我想我会使用答案部分,因为我会在那里发布代码。让我来吧。我想——cmiiw——我找到了解决办法