在插槽上的Python数据模型参考部分中,有一个使用说明列表__slots__
.我对第1和第6项完全感到困惑,因为它们似乎相互矛盾.
第一项:
__slots__
的__dict__
属性将始终可访问,因此__slots__
子类中的定义毫无意义.第六项:
__slots__
声明限制为定义它的类.因此,子类将具有一个,__dict__
除非它们也定义__slots__
(它必须只包含任何其他槽的名称).在我看来,这些项目可以更好地措辞或通过代码显示,但我一直试图绕过这个,我仍然感到困惑.我不明白怎么__slots__
都应该被使用,而我试图让他们的工作更好地把握.
问题:
有人可以用简单的语言向我解释在子类化时继承槽的条件是什么?
(简单的代码示例会有所帮助,但不是必需的.)
我需要找到一种方法来转换python中的以下字符串:
0.000 => 0
0 => 0
123.45000 => 123.45
0000 => 0
123.4506780 => 123.450678
Run Code Online (Sandbox Code Playgroud)
等等.我尝试了.rstrip('0').rstrip('.'),但如果输入为0或00则不起作用.
有任何想法吗?谢谢!
我正在使用Python的urllib2发送HTTP帖子:
import socket, urllib, urllib2
socket.setdefaulttimeout(15)
postdata = urllib.urlencode({'value1' : 'a string', 'value2' : 'another string'})
headers = {
'User-Agent': 'Agent',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'text/html, */*',
}
try:
request = urllib2.Request('http://www.example.com', postData, headers)
response = urllib2.urlopen(request)
except urllib2.HTTPError, e:
# Handle here
except urllib2.URLError, e:
# Handle here
except httplib.HTTPException, e:
# Handle here
Run Code Online (Sandbox Code Playgroud)
偶尔网络问题会导致对urlopen的调用永远不会返回.我们看到except块正确处理了其他错误(包括超时)并调用了socket.setdefaulttimeout(),但仍然存在urlopen永远不会返回的实例.
我知道它永远不会返回,因为我们的实际代码中有一些日志行会在之前和之后被调用,并且当出现此问题时,只会进行之前的调用并且脚本将永久挂起.
检测/处理此问题的最佳方法是什么?
我有一个基于Twisted的项目,用于与网络设备通信,我正在添加对API为SOAP 的新供应商(Citrix NetScaler)的支持.不幸的是,Twisted中对SOAP的支持依然存在SOAPpy
,这已经过时了.事实上,就这个问题(我刚检查过)而言,twisted.web.soap
本身在21个月内甚至没有更新!
我想问一下,如果有人有任何经验,他们愿意与SUDS使用Twisted的超级异步传输功能.看起来插入一个自定义的Twisted传输将是一个自然的SUDS' Client.options.transport
,我只是很难缠绕我的头.
我确实想出了一种方法,通过利用异步方式使用SUDS调用SOAP方法twisted.internet.threads.deferToThread()
,但这对我来说就像是一个黑客.
这是我做过的一个例子,给你一个想法:
# netscaler is a module I wrote using suds to interface with NetScaler SOAP
# Source: http://bitbucket.org/jathanism/netscaler-api/src
import netscaler
import os
import sys
from twisted.internet import reactor, defer, threads
# netscaler.API is the class that sets up the suds.client.Client object
host = 'netscaler.local'
username = password = 'nsroot'
wsdl_url = 'file://' + os.path.join(os.getcwd(), 'NSUserAdmin.wsdl')
api = netscaler.API(host, username=username, password=password, wsdl_url=wsdl_url)
results = []
errors …
Run Code Online (Sandbox Code Playgroud) 我有很多日期字符串Mon, 16 Aug 2010 24:00:00
,其中一些是00-23
小时格式,其中一些是01-24
小时格式.我想获得它们的日期对象列表,但是当我尝试将示例字符串转换为日期对象时,我必须将其转换Mon, 16 Aug 2010 24:00:00
为Tue, 17 Aug 2010 00:00:00
.什么是最简单的方法?
我正在为使用django-piston为Django应用程序编写的API进行最后润色.该API是能够通过其是请求或IP地址来搜索Request
或IPAddress
分别实例.每个请求可以有1个或多个IPAddress
与之关联.
因此,例如,我有一个API调用,它将显示IPAddress
与活动状态"活动","非活动"或"全部"(对于任何一个)匹配的所有对象.的Request
,其每一个IPAddress
实例相关联的可作为IPAddress.request
.
我遇到的问题是,这Request.inputter
是User
配置请求的人的实例的外键.当我从为此API调用创建的处理程序返回结果时,User
将显示实例中的所有字段,包括password
.
这是不好的; 我不想要这个.
所以这是我的处理程序:
class SearchByIPStatusHandler(BaseHandler):
model = IPAddress
allowed_methods = ('GET',)
anonymous = AnonymousIPHandler
def read(self, request, status):
"""
Returns IP addresses based on activity status.
Status: 'active', 'inactive', 'all'
"""
if status == 'all':
return self.model.objects.all()
else:
active = True if (status=='active') else False
return self.model.objects.filter(active=active)
Run Code Online (Sandbox Code Playgroud)
这是以下结果的示例/api/show/all/
:
<response>
<resource>
<updated>2010-02-05 17:08:53.651729</updated>
<expires>2010-02-12 …
Run Code Online (Sandbox Code Playgroud) 我试图得到这方面的支持,但我完全糊涂了.
这是我的代码:
from twisted.internet import reactor
from twisted.web.client import getPage
from twisted.web.error import Error
from twisted.internet.defer import DeferredList
from sys import argv
class GrabPage:
def __init__(self, page):
self.page = page
def start(self, *args):
if args == ():
# We apparently don't need authentication for this
d1 = getPage(self.page)
else:
if len(args) == 2:
# We have our login information
d1 = getPage(self.page, headers={"Authorization": " ".join(args)})
else:
raise Exception('Missing parameters')
d1.addCallback(self.pageCallback)
dl = DeferredList([d1])
d1.addErrback(self.errorHandler)
dl.addCallback(self.listCallback)
def errorHandler(self,result):
# Bad thingy! …
Run Code Online (Sandbox Code Playgroud) 自从我开始工作(约6年)以来,我一直是一个.NET人.最近,我正在使用Django开发一个项目,这需要我并行学习Python.很多时候我碰到了看似简单的Python代码,但我无法理解.这是其中之一.
class TypedProperty(object):
def __init__(self, name, type, default=None):
self.name = "_" + name
self.type = type
self.default = default if default else type()
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下代码的最后一行是做什么的吗?
我希望这个问题不是太微不足道,因为我无法想出一个好的头衔.
我正在制作一个双变量if语句并且它一直返回错误.我不知道出了什么问题:
variable = float(0)
for index in range(10):
variable = variable + float(2)
if x <= float(variable/3) and > float(variable-2.0/3):
# do something
else:
pass
Run Code Online (Sandbox Code Playgroud)
或类似的东西.这是基本结构.为什么每当我尝试运行它时它会一直突出显示>红色?
python ×9
twisted ×2
datetime ×1
django ×1
double ×1
if-statement ×1
inequalities ×1
inheritance ×1
networking ×1
slots ×1
soap ×1
sockets ×1
string ×1
subclass ×1
suds ×1
transport ×1
variables ×1
zero ×1