如果我从中执行此操作的函数是实例的类派生的基类,如何找出在Python中创建对象实例的类的名称?
想到也许检查模块可能在这里帮助了我,但它似乎没有给我我想要的东西.如果没有解析__class__成员,我不知道如何获取这些信息.
我只是想简化我的一个类,并引入了一些与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)
为什么?
有没有一种简单的方法来测试生成器是否没有项目,比如peek,hasNext,isEmpty,这些是什么?
有没有人知道一个非常简单的方法,只是将字符串的第一个字母大写,而不管字符串其余部分的大小写?
例如:
asimpletest -> Asimpletest
aSimpleTest -> ASimpleTest
Run Code Online (Sandbox Code Playgroud)
我希望能够完成所有字符串长度.
我有一个像这样的元组列表:
[
('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)
如何在不保持项目跟踪第一项是否与循环元组循环相同的情况下进行此操作?这感觉相当混乱(加上我必须将列表排序开始)...
真的很简单的问题,如何在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)
谢谢.
有没有更好的方法来做到以下几点:
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)
保持最高效率.
在使用C++模板元编程时,我发现很难弄清楚我的代码有什么问题.可能我不是很擅长理解错误消息,但据我所知,我不能诉诸于打印语句或断点来弄清楚发生了什么.
在尝试找出为什么没有编译的东西时,您可以提供哪些提示或建议,而不仅仅是手动选择代码并希望它来找我?
我需要一个弱引用列表,它们会在项目死亡时删除它们.目前,我这样做的唯一方法是不断刷新列表(手动删除死引用).
我知道有一个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) 有没有从llvm ir到工作源代码的简单方法?
具体来说,我想从一些简单的C++代码开始,它只修改POD(主要是整数,浮点数等),将其转换为llvm ir,对其执行一些简单的分析和转换,然后将其转换回C++代码?
它并不介意任何名称被破坏,我只是希望能够在进行依赖于机器的优化之前对源进行破解.