小编cha*_*ppy的帖子

是否有一个python命名约定,以避免与标准模块名称冲突?

PEP 8建议使用单个尾部下划线以避免与python关键字冲突,但是与标准python模块的模块名称冲突怎么办?这也应该是一个尾随下划线吗?

我想象的是这样的:

import time
time_ = time.time()
Run Code Online (Sandbox Code Playgroud)

python naming-conventions

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

在Python中分配(或重新重载)赋值运算符的麻烦

我在分配赋值运算符时遇到问题.

我已成功超载__setattr__.但是在对象初始化之后,我想做__setattr__其他事情,所以我尝试将它指定为另一个函数,__setattr2__.

码:

class C(object):

    def __init__(self):
        self.x = 0
        self.__setattr__ = self.__setattr2__

    def __setattr__(self, name, value):
        print "first, setting", name
        object.__setattr__(self, name, value)

    def __setattr2__(self, name, value):
        print "second, setting", name
        object.__setattr__(self, name, value)

c = C()
c.x = 1
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

first, setting x
first, setting __setattr__
first, setting x
Run Code Online (Sandbox Code Playgroud)

我想要/期望的是什么:

first, setting x
first, setting __setattr__
second, setting x
Run Code Online (Sandbox Code Playgroud)

python

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

为什么短手分配和NaN有不同的行为?

我在python 2.7.3中看到了这个,同时有pylab和numpy.为什么是这样:

>>> x = pylab.arange(5)
>>> x = x + pylab.nan
>>> print x
[ nan  nan  nan  nan  nan]
Run Code Online (Sandbox Code Playgroud)

与此不同:

>>> x = pylab.arange(5)
>>> x += pylab.nan
__main__:1: RuntimeWarning: invalid value encountered in add
>>> print x
[-9223372036854775808 -9223372036854775808 -9223372036854775808
 -9223372036854775808 -9223372036854775808]
Run Code Online (Sandbox Code Playgroud)

python numpy

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

是否有一个python函数来重命名对象的属性?

基本上,是否已经有一个内置或常用的功能来执行此操作:

def rename_attribute(object_, old_attribute_name, new_attribute_name):
    setattr(object_, new_attribute_name, getattr(object_, old_attribute_name))
    delattr(object_, old_attribute_name)
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
2
解决办法
4496
查看次数

标签 统计

python ×4

naming-conventions ×1

numpy ×1