小编Mar*_*oma的帖子

如何创建对象并向其添加属性?

我想在Python中创建一个动态对象(在另一个对象内),然后为其添加属性.

我试过了:

obj = someobject
obj.a = object()
setattr(obj.a, 'somefield', 'somevalue')
Run Code Online (Sandbox Code Playgroud)

但这没用.

有任何想法吗?

编辑:

我从for循环中设置属性,循环遍历值列表,例如

params = ['attr1', 'attr2', 'attr3']
obj = someobject
obj.a = object()

for p in params:
   obj.a.p # where p comes from for loop variable
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我会得到obj.a.attr1,obj.a.attr2,obj.a.attr3.

我使用了这个setattr函数因为我不知道怎么做obj.a.NAME一个for循环.

如何根据p上面示例中的值设置属性?

python attributes class object

279
推荐指数
9
解决办法
30万
查看次数

如何在Python中获取当前模块中所有类的列表?

我已经看到很多人从模块中提取所有类的例子,通常是这样的:

# foo.py
class Foo:
    pass

# test.py
import inspect
import foo

for name, obj in inspect.getmembers(foo):
    if inspect.isclass(obj):
        print obj
Run Code Online (Sandbox Code Playgroud)

真棒.

但我无法找到如何从当前模块中获取所有类.

# foo.py
import inspect

class Foo:
    pass

def print_classes():
    for name, obj in inspect.getmembers(???): # what do I do here?
        if inspect.isclass(obj):
            print obj

# test.py
import foo

foo.print_classes()
Run Code Online (Sandbox Code Playgroud)

这可能是非常明显的事情,但我找不到任何东西.谁能帮我吗?

python reflection inspect

278
推荐指数
7
解决办法
16万
查看次数

是否可以在Python中创建抽象类?

如何在Python中创建类或方法摘要?

我试着__new__()像这样重新定义:

class F:
    def __new__(cls):
        raise Exception("Unable to create an instance of abstract class %s" %cls)
Run Code Online (Sandbox Code Playgroud)

但是现在如果我创建一个G继承自F这样的类:

class G(F):
    pass
Run Code Online (Sandbox Code Playgroud)

然后我也无法实例化G,因为它调用了它的超类__new__方法.

有没有更好的方法来定义抽象类?

python inheritance abstract-class class abstract

268
推荐指数
6
解决办法
17万
查看次数

len()函数的成本

len()Python内置函数的功能成本是多少?(列表/元组/串/字典)

python algorithm collections complexity-theory

261
推荐指数
5
解决办法
7万
查看次数

如何让git分支与master保持同步

目前git正在努力,我无法想出以下的最佳解决方案.

有两个分支,一个叫master,一个叫mobiledevicesupport.我希望将mobiledevicesupport保持为一个连续的分支,只要mobiledevicesupport稳定,它就会与主分支合并/同步.这会将来自mobiledevicesupport的更改合并到master中,但也会将master中的所有更改带入mobiledevicesupport,以便继续处理分支并更改或修改功能.这需要与中央存储库和多个开发人员一起工作.

请举例说明其他人使用的类似工作流程,或者只是告诉我这个想法是不是很愚蠢,我应该考虑其他选择.目前工作流程似乎很合理,但我只是不知道如何让git以这种方式工作.

谢谢,所有帮助非常感谢.

更新1:如果我要将master与mobiledevicesupport和mobiledevice support合并到master中,我是否会在两个分支上获得复制提交.或者git足够聪明,我已经将分支A中的最新更改提取到分支B并将合并提交C添加到分支B.并且我已将分支B中的最新更改提取到分支A并将合并提交D添加到分支一个?

我打算发布一张图片,但我没有足够的声誉,所以我想下面的插图将要做.两个分支连续运行,经常合并两个方向.我不确定的关键是git将如何完成提交,并且它将在合并时从其他分支的提交填充任一分支,或者它将保持干净.我之前使用过rebase但它似乎结束了分支并将所有提交放入master中,或者我做错了.感谢你目前的帮助.

master
A--B--C-----H--I--J--M--N
       \   /    \
mobile  \ /      \
D--E--F--G--------K--L
Run Code Online (Sandbox Code Playgroud)

git

251
推荐指数
6
解决办法
26万
查看次数

如何在使用新语言功能的程序中检查Python版本?

如果我的Python脚本至少需要特定版本的Python,那么在使用早期版本的Python启动脚本时,正确失败的正确方法是什么?

如何及早获得控制权以发出错误消息并退出?

例如,我有一个使用ternery操作符(2.5中的新增内容)和"with"块(2.6中的新增内容)的程序.我写了一个简单的小解释器 - 版本检查器例程,这是脚本会调用的第一件事......除了它没有那么远.相反,在我的例程被调用之前,脚本在python编译期间失败.因此,脚本的用户会看到一些非常模糊的synax错误回溯 - 这几乎需要专家推断它只是运行错误版本的Python的情况.

我知道如何检查Python的版本.问题是某些语法在旧版本的Python中是非法的.考虑这个程序:

import sys
if sys.version_info < (2, 4):
    raise "must use python 2.5 or greater"
else:
    # syntax error in 2.4, ok in 2.5
    x = 1 if True else 2
    print x
Run Code Online (Sandbox Code Playgroud)

在2.4下运行时,我想要这个结果

$ ~/bin/python2.4 tern.py 
must use python 2.5 or greater
Run Code Online (Sandbox Code Playgroud)

而不是这个结果:

$ ~/bin/python2.4 tern.py 
  File "tern.py", line 5
    x = 1 if True else 2
           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

(引导同事.)

python version

235
推荐指数
8
解决办法
25万
查看次数

如何在Python中实现Softmax函数

Udacity的深度学习类中,y_i的softmax只是指数除以整个Y向量的指数之和:

在此输入图像描述

哪里S(y_i)是的SOFTMAX功能y_i,并e为指数和j是否定的.输入向量Y中的列数.

我尝试过以下方法:

import numpy as np

def softmax(x):
    """Compute softmax values for each sets of scores in x."""
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()

scores = [3.0, 1.0, 0.2]
print(softmax(scores))
Run Code Online (Sandbox Code Playgroud)

返回:

[ 0.8360188   0.11314284  0.05083836]
Run Code Online (Sandbox Code Playgroud)

但建议的解决方案是:

def softmax(x):
    """Compute softmax values for each sets of scores in x."""
    return np.exp(x) / np.sum(np.exp(x), axis=0)
Run Code Online (Sandbox Code Playgroud)

它产生与第一个实现相同的输出,即使第一个实现显式获取每列和最大值的差异,然后除以总和.

有人可以用数学方式显示原因吗?一个是正​​确的而另一个是错的吗?

实现在代码和时间复杂性方面是否相似?哪个更有效率?

python numpy machine-learning logistic-regression softmax

219
推荐指数
10
解决办法
19万
查看次数

如何检查变量是否是一个类?

我想知道如何检查变量是否是一个类(不是实例!).

我已经尝试使用该函数isinstance(object, class_or_type_or_tuple)来执行此操作,但我不知道类将具有什么类型.

例如,在以下代码中

class Foo: pass  
isinstance(Foo, **???**) # i want to make this return True.
Run Code Online (Sandbox Code Playgroud)

我试图取代" class"与??? ,但我意识到这class是python中的关键字.

python reflection

216
推荐指数
5
解决办法
14万
查看次数

Javascript日期对象总是休息一天吗?

在我的Java Script应用程序中,我将日期存储为如下格式:

2011-09-24
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用上面的值来创建一个新的Date对象(所以我可以以不同的格式检索日期)时,日期总会在一天后返回.见下文:

var doo = new Date("2011-09-24");
console.log(doo);
Run Code Online (Sandbox Code Playgroud)

日志:

Fri Sep 23 2011 20:00:00 GMT-0400 (Eastern Daylight Time)
Run Code Online (Sandbox Code Playgroud)

javascript date

205
推荐指数
13
解决办法
15万
查看次数

如何用python解析包含毫秒的时间字符串?

我能够用time.strptime解析包含日期/时间的字符串

>>> import time
>>> time.strptime('30/03/09 16:31:32', '%d/%m/%y %H:%M:%S')
(2009, 3, 30, 16, 31, 32, 0, 89, -1)
Run Code Online (Sandbox Code Playgroud)

如何解析包含毫秒的时间字符串?

>>> time.strptime('30/03/09 16:31:32.123', '%d/%m/%y %H:%M:%S')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/_strptime.py", line 333, in strptime
    data_string[found.end():])
ValueError: unconverted data remains: .123
Run Code Online (Sandbox Code Playgroud)

python time date datetime-parsing

192
推荐指数
2
解决办法
17万
查看次数