小编jat*_*ism的帖子

Python:子类中__slots__的继承实际上如何工作?

插槽上Python数据模型参考部分中,有一个使用说明列表__slots__.我对第1和第6项完全感到困惑,因为它们似乎相互矛盾.

第一项:

  • 从没有继承的类继承时,该类 __slots____dict__属性将始终可访问,因此__slots__ 子类中的定义毫无意义.

第六项:

  • 一个的动作__slots__ 声明限制为定义它的类.因此,子类将具有一个,__dict__ 除非它们也定义__slots__ (它必须只包含任何其他槽的名称).

在我看来,这些项目可以更好地措辞或通过代码显示,但我一直试图绕过这个,我仍然感到困惑.我不明白怎么__slots__应该被使用,而我试图让他们的工作更好地把握.

问题:

有人可以用简单的语言向我解释在子类化时继承槽的条件是什么?

(简单的代码示例会有所帮助,但不是必需的.)

python inheritance subclass slots

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

在Python中删除尾随零

我需要找到一种方法来转换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 string zero

24
推荐指数
3
解决办法
3万
查看次数

使用Python urllib2.urlopen检测挂起

我正在使用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永远不会返回的实例.

我知道它永远不会返回,因为我们的实际代码中有一些日志行会在之前和之后被调用,并且当出现此问题时,只会进行之前的调用并且脚本将永久挂起.

检测/处理此问题的最佳方法是什么?

python sockets networking

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

Python:如何使用Twisted作为SUDS的传输?

我有一个基于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)

python soap twisted suds transport

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

如何在Python中将日期时间字符串中的时间从24:00转换为00:00?

我有很多日期字符串Mon, 16 Aug 2010 24:00:00,其中一些是00-23小时格式,其中一些是01-24小时格式.我想获得它们的日期对象列表,但是当我尝试将示例字符串转换为日期对象时,我必须将其转换Mon, 16 Aug 2010 24:00:00Tue, 17 Aug 2010 00:00:00.什么是最简单的方法?

python datetime

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

Django Piston:如何从处理程序结果中排除嵌套字段?它甚至可能吗?

我正在为使用django-piston为Django应用程序编写的API进行最后润色.该API是能够通过其是请求或IP地址来搜索RequestIPAddress分别实例.每个请求可以有1个或多个IPAddress与之关联.

因此,例如,我有一个API调用,它将显示IPAddress与活动状态"活动","非活动"或"全部"(对于任何一个)匹配的所有对象.的Request,其每一个IPAddress实例相关联的可作为IPAddress.request.

我遇到的问题是,这Request.inputterUser配置请求的人的实例的外键.当我从为此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)

python django django-models django-piston

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

Twisted Python getPage

我试图得到这方面的支持,但我完全糊涂了.

这是我的代码:


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)

python twisted

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

"self.default = default if default else type()"是什么意思?

自从我开始工作(约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)

有人可以向我解释一下代码的最后一行是做什么的吗?

我希望这个问题不是太微不足道,因为我无法想出一个好的头衔.

python

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

双变量if语句不起作用

我正在制作一个双变量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 variables double if-statement inequalities

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