假设我有一个简单的类:
class Foobar(object):
pass
Run Code Online (Sandbox Code Playgroud)
如果我使用dir(Foobar)
,我会得到以下输出:
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
Run Code Online (Sandbox Code Playgroud)
即使它没有出现在输出中dir()
,我也可以访问__name__
:
Foobar.__name__
Run Code Online (Sandbox Code Playgroud)
得到Foobar
.
为什么Python表现那样?
我正在尝试在C#中完成我的第一步,并希望构建一个空的GTK窗口作为我的第一个任务.通过macports
我安装了以下包:
我也使用Mono主页上的MonoDevelop.
我添加gtk-sharp.dll
(从/opt/local/lib/mono/gtk-sharp-2.0
)我的参考.我的代码看起来像这样:
using System;
using Gtk;
namespace lolbr_client
{
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine("Loading..");
Window window = new Window("test");
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译并运行该代码片段时,它似乎找到并包含GTK库,它将"Loading .."打印到控制台,但后面的行Console.WriteLine()
会导致此错误:
System.DllNotFoundException: gtksharpglue-2
at (wrapper managed-to-native) Gtk.Container:gtksharp_gtk_container_get_focus_child_offset ()
at Gtk.Container..cctor () [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)
虽然我的文件系统上不存在特定的.dll,但快速locate gtksharpglue-2
显示以下文件:
/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgtksharpglue-2.so
/opt/local/lib/libgtksharpglue-2.a
/opt/local/lib/libgtksharpglue-2.la
/opt/local/lib/libgtksharpglue-2.so
Run Code Online (Sandbox Code Playgroud)
这些文件对我有帮助吗?从这里调试/修复此问题的后续步骤是什么?我已经搜索了Google,但要么我对这个主题太新,要么无法识别有用的信息,要么就是不存在有用的信息.有人能帮我吗?提前致谢!
Python内置类型set
有一个名为pop()的方法,来自docs:
从集合中删除并返回任意元素.如果集合为空,则引发KeyError.
我想不出这个功能的任何用例,似乎是尝试实现该list
接口.
为什么这部分是Python标准?
我对Python 2.7中的子类化行为有疑问.
如果我从内置dict
类型继承,它似乎__ dict __
总是空的.Python在哪里保存键/值对?
>>> class Foobar(dict):
... pass
...
>>> foobar = Foobar()
>>> foobar.__dict__
{}
>>> foobar['test'] = 1
>>> foobar.__dict__
{}
>>>
Run Code Online (Sandbox Code Playgroud) 我正在使用re
图书馆.
def validate_ip(self, ip):
pattern = re.compile(r'([01]?[0-9]?[0-9]|2[0-4][0-9]|2[5][0-5])\.{4}')
matchObj = re.match(pattern, ip)
if matchObj == None:
print "Invalid IP:", ip
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
当我通过IP 192.0.0.0时,输出是:
Invalid IP: 192.0.0.0
Run Code Online (Sandbox Code Playgroud)
为什么不匹配?
|=
运算符在python中是什么意思?
我|=
在递归函数中遇到了这个运算符:http : //nltk.googlecode.com/svn/trunk/doc/api/nltk.corpus.reader.wordnet-pysrc.html#Synset.hypernym_distances
我目前正在研究Python产品的部署技术。我们已经使用多个git存储库来管理代码,但希望改善设置和更新服务器的过程。如今,easy_install,.egg文件和virtualenv似乎是最好的工具。
要注意的是:我们实际上并没有进行版本控制。我们所有的产品都有一个master分支,该分支应该一直提供稳定的代码。如果要更新,则必须git pull
针对每个产品及其所有依赖性在每个服务器上的master分支。
该解决方案非常耗时,我们希望对其进行改进。
我的想法是在所有服务器/安装上创建一个virtualenv实例,并使用easy_install来安装和更新我们自己的软件包,但是我找不到一种方法来指定git存储库作为源代码的源。
有办法实现吗?我错过了什么?我是朝错误的方向前进吗?总体而言,这是个坏主意吗?
在此先感谢Fabian