我是新来的报道并遇到了一个奇怪的问题.我的报道是将我的虚拟环境站点包考虑在内.以下是覆盖率运行的输出:
coverage run test.py
....................
----------------------------------------------------------------------
Ran 20 tests in 0.060s
OK
(atcatalog)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jmfrank63@fullstack-audio-text-catalog:~/workspace (git master) [19:58:45]
$ coverage report
Name Stmts Miss Cover
-----------------------------------------------------------------------------------------------------
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/__init__ 18 0 100%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/_compat 38 20 47%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/app 528 255 52%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/blueprints 156 118 24%
.
.
.
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/urls 412 215 …Run Code Online (Sandbox Code Playgroud) 尝试使用ironpython安装autopep8时出错:
ImportError: No module named logilab
Run Code Online (Sandbox Code Playgroud)
它失败的代码片段是:
def load_module(self, fullname):
self._reopen()
try:
mod = imp.load_module(fullname, self.file, self.filename, self.etc)
finally:
if self.file:
self.file.close()
# Note: we don't set __loader__ because we want the module to look
# normal; i.e. this is just a wrapper for standard import machinery
return mod
Run Code Online (Sandbox Code Playgroud)
使用解释器ipy64导入logilab并没有失败.我为文件名添加了一个print语句,它显示:
C:\Program Files (x86)\IronPython 2.7\Lib\site-packages\logilab_common-0.59.1-py2.7.egg\logilab
Run Code Online (Sandbox Code Playgroud)
该路径存在,它包含一个init .py,其中包含以下内容:
"""generated file, don't modify or your data will be lost"""
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
我通过添加快速修复错误和脏
except ImportError:
mod = __import__(fullname)
Run Code Online (Sandbox Code Playgroud)
但由于我不知道可能产生的影响,我对这个问题没有很好的感觉.
现在,为什么使用imp.load_module失败了,使用 …
在python中,函数是第一类对象。可以调用一个类。所以你可以用一个类替换一个函数。但是你能让一个函数表现得像一个类吗?您可以在函数中添加和删除属性或调用内部函数(然后调用方法)吗?
我找到了一种通过代码检查来做到这一点的方法。
import inspect
class AddOne(object):
"""class definition"""
def __init__(self, num):
self.num = num
def getResult(self):
"""
class method
"""
def addOneFunc(num):
"inner function"
return num + 1
return addOneFunc(self.num);
if __name__ == '__main__':
two = AddOne(1);
two_src = '\n'.join([line[4:] for line in inspect.getsource(AddOne.getResult).split('\n')])
one_src = '\n'.join([line[4:] for line in two_src.split('\n')
if line[:4] == ' ' and line[4:8] == ' ' or line[4:8] == 'def '])
one_co = compile(one_src, '<string>', 'exec')
exec one_co
print addOneFunc(5)
print addOneFunc.__doc__
Run Code Online (Sandbox Code Playgroud)
但是有没有办法以更直接的方式访问类中定义的局部变量和函数?
编辑
问题是如何访问python的内部结构以获得更好的理解。当然,我不会在正常编程中这样做。当我们讨论 …
我正在与Codeskulptor合作解决岩石碰撞问题.我想检查岩石之间的碰撞,我的岩石列在清单中.我想出了构建组合列表然后检查碰撞的解决方案.我没有itertools可用.我的组合列表是这样创建的:
def combinations(items):
n_items = [(n,item) for n,item in enumerate(items)]
return [(item,item2) for n,item in n_items for m,item2 in n_items[n:] if n != m]
letters = ['A','B','C','D']
print combinations(letters)
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]
Run Code Online (Sandbox Code Playgroud)
结果还可以.
在尝试使用函数之前,我尝试在一个衬里中执行此操作:
def combinations2(items):
return [(item,item2) for n,item in enumerate(items) for m,item2 in enumerate(items[n:]) if n != m]
letters = ['A','B','C','D']
print combinations2(letters)
Run Code Online (Sandbox Code Playgroud)
但结果是完全不同和错误的:
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'B'), ('B', 'D'), ('C', 'C'), ('C', 'D'), ('D', …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试深入了解.NET框架.当我想知道是否可以创建两个CommandManagers时,我遇到了一个错误:
Cannot create an instance of CommandManager because it has no public constructors.
Run Code Online (Sandbox Code Playgroud)
显然这意味着:不要这样做,而且有两个人甚至没有意义.现在我在收到消息之前遇到了另一个错误:
Cannot create an instance of ... because it is sealed
Run Code Online (Sandbox Code Playgroud)
禁止的效果是相同的,但有什么区别.为什么选择一个类没有公共构造函数而不是密封?
编辑:
对不起,我生病了几天.我进一步混合了两种语言:VB和C#.我打开了两个标签,忽略了一个站在C#上,一个站在VB Code上.一个班级被密封,另一个班级似乎是NonInheritable.我没有意识到这实际上是一样的.现在错误消息变得敏感.
IronPython代码片段:
commandManager = CommandManager()
Run Code Online (Sandbox Code Playgroud)
失败了
Cannot create instances of CommandManager because it has no public constructors
Run Code Online (Sandbox Code Playgroud)
而
class MyCommandManager(CommandManager):
return super(MyCommandManager, self).__init__(*args, **kwargs)()
Run Code Online (Sandbox Code Playgroud)
失败了:
cannot derive from System.Windows.Input.CommandManager because it is sealed
Run Code Online (Sandbox Code Playgroud)
我被这些错误消息误导了,因为我的google和stackoverflow搜索没有回答(当然因为CommandManager总是密封在C#中而在VB中始终是NonInheritable)另外CommandManager似乎都是密封的并且没有公共构造函数.
python ×3
class ×2
c# ×1
constructor ×1
enumerate ×1
function ×1
import ×1
ironpython ×1
python-2.7 ×1
sealed ×1
testing ×1
virtualenv ×1