小编Dan*_*Dan的帖子

获取实例的类名?

如果我从中执行此操作的函数是实例的类派生的基类,如何找出在Python中创建对象实例的类的名称?

想到也许检查模块可能在这里帮助了我,但它似乎没有给我我想要的东西.如果没有解析__class__成员,我不知道如何获取这些信息.

python introspection instanceof python-datamodel

1303
推荐指数
10
解决办法
83万
查看次数

为什么在__new __()后总是调用__init __()?

我只是想简化我的一个类,并引入了一些与flyweight设计模式相同的功能.

但是,我有点困惑,为什么__init__总是被称为__new__.我没想到这个.任何人都可以告诉我为什么会这样,以及我如何能够实现这个功能呢?(除了将实施放入__new__感觉相当hacky之外.)

这是一个例子:

class A(object):
    _dict = dict()

    def __new__(cls):
        if 'key' in A._dict:
            print "EXISTS"
            return A._dict['key']
        else:
            print "NEW"
            return super(A, cls).__new__(cls)

    def __init__(self):
        print "INIT"
        A._dict['key'] = self
        print ""

a1 = A()
a2 = A()
a3 = A()
Run Code Online (Sandbox Code Playgroud)

输出:

NEW
INIT

EXISTS
INIT

EXISTS
INIT
Run Code Online (Sandbox Code Playgroud)

为什么?

python design-patterns class-design

525
推荐指数
14
解决办法
26万
查看次数

如何从一开始就知道发电机是否为空?

有没有一种简单的方法来测试生成器是否没有项目,比如peek,hasNext,isEmpty,这些是什么?

python generator

127
推荐指数
10
解决办法
6万
查看次数

大写一个字符串

有没有人知道一个非常简单的方法,只是将字符串的第一个字母大写,而不管字符串其余部分的大小写?

例如:

asimpletest -> Asimpletest
aSimpleTest -> ASimpleTest
Run Code Online (Sandbox Code Playgroud)

我希望能够完成所有字符串长度.

python string

52
推荐指数
5
解决办法
8万
查看次数

在Python中将元组列表转换为Dict

我有一个像这样的元组列表:

[
('a', 1),
('a', 2),
('a', 3),
('b', 1),
('b', 2),
('c', 1),
]
Run Code Online (Sandbox Code Playgroud)

我想通过第一项来迭代这个键控,所以例如我可以打印这样的东西:

a 1 2 3
b 1 2
c 1
Run Code Online (Sandbox Code Playgroud)

如何在不保持项目跟踪第一项是否与循环元组循环相同的情况下进行此操作?这感觉相当混乱(加上我必须将列表排序开始)...

python iteration dictionary tuples list

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

在Unix上结合echo和cat

真的很简单的问题,如何在shell中组合echo和cat,我正在尝试将文件的内容写入另一个带有前置字符串的文件中?

如果/ tmp/file看起来像这样:

this is a test
Run Code Online (Sandbox Code Playgroud)

我想运行这个:

echo "PREPENDED STRING"
cat /tmp/file | sed 's/test/test2/g' > /tmp/result 
Run Code Online (Sandbox Code Playgroud)

所以/ tmp/result看起来像这样:

PREPENDED STRINGthis is a test2
Run Code Online (Sandbox Code Playgroud)

谢谢.

unix shell piping

31
推荐指数
2
解决办法
4万
查看次数

python中的嵌套try语句?

有没有更好的方法来做到以下几点:

try:
    a.method1()
except AttributeError:
    try:
        a.method2()
    except AttributeError:
        try:
            a.method3()
        except AttributeError:
            raise
Run Code Online (Sandbox Code Playgroud)

它看起来很讨厌,我宁愿不这样做:

if hasattr(a, 'method1'):
    a.method1()
else if hasattr(a, 'method2'):
    a.method2()
else if hasattr(a, 'method3'):
    a.method3()
else:
    raise AttributeError
Run Code Online (Sandbox Code Playgroud)

保持最高效率.

python try-catch

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

你如何在c ++中调试重度模板化的代码?

在使用C++模板元编程时,我发现很难弄清楚我的代码有什么问题.可能我不是很擅长理解错误消息,但据我所知,我不能诉诸于打印语句或断点来弄清楚发生了什么.

在尝试找出为什么没有编译的东西时,您可以提供哪些提示或建议,而不仅仅是手动选择代码并希望它来找我?

c++ debugging templates metaprogramming

23
推荐指数
4
解决办法
6996
查看次数

python中的weakref列表

我需要一个弱引用列表,它们会在项目死亡时删除它们.目前,我这样做的唯一方法是不断刷新列表(手动删除死引用).

我知道有一个WeakKeyDictionary和一个WeakValueDictionary,但我真的在WeakList之后,有没有办法做到这一点?

这是一个例子:

import weakref

class A(object):
    def __init__(self):
       pass

class B(object):
    def __init__(self):
        self._references = []

    def addReference(self, obj):
        self._references.append(weakref.ref(obj))

    def flush(self):
        toRemove = []

        for ref in self._references:
            if ref() is None:
                toRemove.append(ref)

        for item in toRemove:
            self._references.remove(item)

b = B()

a1 = A()
b.addReference(a1)
a2 = A()
b.addReference(a2)

del a1
b.flush()
del a2
b.flush()
Run Code Online (Sandbox Code Playgroud)

python weak-references

17
推荐指数
3
解决办法
7175
查看次数

llvm ir回到人类可读的源语言?

有没有从llvm ir到工作源代码的简单方法?

具体来说,我想从一些简单的C++代码开始,它只修改POD(主要是整数,浮点数等),将其转换为llvm ir,对其执行一些简单的分析和转换,然后将其转换回C++代码?

它并不介意任何名称被破坏,我只是希望能够在进行依赖于机器的优化之前对源进行破解.

c++ programming-languages llvm clang

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