右对齐和左对齐网页上的两个div标签的最佳方法是什么?如果可能的话,我想要一个优雅的解决方案.
给定方法的引用,有没有办法检查方法是否绑定到对象?你还可以访问它绑定的实例吗?
我正在使用Python 2.x,我有一个我正在从以太召唤的对象; 关于它的文件不是特别清楚.我希望能够获得该对象的属性列表以及每个属性的类型.
同样,我想获得该对象的方法列表,以及我可以在该方法上找到的任何其他信息,例如参数的数量和它们各自的类型.
我有一种感觉,我只是在Google搜索中错过了正确的术语.并不是说我想破坏具体细节,但它是Active Directory,所以这总是很有趣.
我正在编写C扩展,我想让我的方法的签名可见为内省.
static PyObject* foo(PyObject *self, PyObject *args) {
/* blabla [...] */
}
PyDoc_STRVAR(
foo_doc,
"Great example function\n"
"Arguments: (timeout, flags=None)\n"
"Doc blahblah doc doc doc.");
static PyMethodDef methods[] = {
{"foo", foo, METH_VARARGS, foo_doc},
{NULL},
};
PyMODINIT_FUNC init_myexample(void) {
(void) Py_InitModule3("_myexample", methods, "a simple example module");
}
Run Code Online (Sandbox Code Playgroud)
现在,如果(在构建它之后......)我加载模块并查看它的帮助:
>>> import _myexample
>>> help(_myexample)
Run Code Online (Sandbox Code Playgroud)
我会得到:
Help on module _myexample:
NAME
_myexample - a simple example module
FILE
/path/to/module/_myexample.so
FUNCTIONS
foo(...)
Great example function
Arguments: (timeout, flags=None)
Doc blahblah doc doc …Run Code Online (Sandbox Code Playgroud) 在python中,可以使用'.' 为了访问对象的字典项.例如:
class test( object ) :
def __init__( self ) :
self.b = 1
def foo( self ) :
pass
obj = test()
a = obj.foo
Run Code Online (Sandbox Code Playgroud)
从上面的示例中,拥有'a'对象,是否有可能从它引用'obj',它是'foo'方法分配的父命名空间?例如,将obj.b更改为2?
在Python中,str(),int(),float()等函数通常用于执行类型转换.但是,这些要求您在开发时了解要转换为的类型.我正在尝试编写的一些Python代码的子问题如下:
给出两个变量,foo并bar找到类型foo.(在开发时不知道,因为这是通用代码.)然后,尝试转换bar为任何类型foo.如果无法做到这一点,请抛出异常.
例如,假设您调用执行此操作的函数conv.它的签名看起来像
def conv(foo, bar) :
# Do stuff.
Run Code Online (Sandbox Code Playgroud)
它会被称为:
result = conv(3.14, "2.718") # result is now 2.718, as a float.
Run Code Online (Sandbox Code Playgroud) python reflection introspection type-conversion python-datamodel
我正在努力学习用Python编程,并专注于更好地处理如何使用标准模块和其他模块.dir函数在解释器中似乎非常强大,但我想知道我是否因为缺少OOP背景而遗漏了某些内容.使用S.Lotts一书,我决定使用他的Die类来学习有关类和实例的语法和用法的更多信息.
这是原始代码:
class Die(object):
''' simulate a six-sided die '''
def roll(self):
self.value=random.randrange(1,7)
return self.value
def getValue(self):
return self.value
Run Code Online (Sandbox Code Playgroud)
我正在看那个,在创建了一些实例后,我想知道单词value是否是某个关键字,以及在class语句中使用了word对象,所以我决定通过将类定义更改为以下内容来查找:
class Die():
''' simulate a six-sided die '''
def roll(self):
self.ban=random.randrange(1,7)
return self.ban
def getValue(self):
return self.ban
Run Code Online (Sandbox Code Playgroud)
这个变化向我展示了我从我的实例中获得了相同的行为,但是当我执行dir时,实例中缺少以下方法/属性:
'__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__',
_repr__', '__setattr__', '__str__', '__weakref__'
Run Code Online (Sandbox Code Playgroud)
我还想到,当我在一个实例上做了一个dir时,我有一个额外的关键字禁令,我最终想到的是我的实例的一个属性.这有助于我理解我可以使用d1.ban来访问我的实例的值.我可以弄清楚这是一个属性的唯一原因是我键入了d1.happy并得到了一个AttributeError 我发现d1.GetValue是一个附加到Die的方法,因为这就是解释器告诉我的.
因此,当我尝试使用像BeautifulSoup这样复杂但有用的模块时,如何在输入dir(实例)后知道列出的内容是我的实例的属性还是我的实例的方法.我需要知道这一点,因为这个问题让我觉得有了属性我调用方法的结果和方法我在我的实例上调用一个函数.
这个问题可能过于冗长,但确实有助于我更好地理解属性和方法之间的区别.具体来说,当我看到在我的Die类的实例上调用dir的结果时,我看到了这一点
['__doc__', '__module__', 'ban', 'getValue', 'roll']
Run Code Online (Sandbox Code Playgroud)
因此,通过查看列表中的属性和方法而不必诉诸试验和错误或者输入hasattr(myInstance,suspAttributeName)来查看它似乎很有用.
在发布我试过的问题之后
for each in …Run Code Online (Sandbox Code Playgroud) 以下代码
import types
class A:
class D:
pass
class C:
pass
for d in dir(A):
if type(eval('A.'+d)) is types.ClassType:
print d
Run Code Online (Sandbox Code Playgroud)
输出
C
D
Run Code Online (Sandbox Code Playgroud)
如何按照代码中定义这些类的顺序输出?即
D
C
Run Code Online (Sandbox Code Playgroud)
除了使用inspect.getsource(A)并解析之外,还有什么方法吗?
循环Python对象的方法并调用它们的正确方法是什么?
鉴于对象:
class SomeTest():
def something1(self):
print "something 1"
def something2(self):
print "something 2"
Run Code Online (Sandbox Code Playgroud) 我正在为我的程序编写一个插件系统,我无法解决一件事:
class ThingLoader(object):
'''
Loader class
'''
def loadPlugins(self):
'''
Get all the plugins from plugins folder
'''
from diones.thingpad.plugin.IntrospectionHelper import loadClasses
classList=loadClasses('./plugins', IPlugin)#Gets a list of
#plugin classes
self.plugins={}#Dictionary that should be filled with
#touples of objects and theirs states, activated, deactivated.
classList[0](self)#Runs nicelly
foo = classList[1]
print foo#prints <class 'TestPlugin.TestPlugin'>
foo(self)#Raise an exception
Run Code Online (Sandbox Code Playgroud)
测试插件看起来像这样:
import diones.thingpad.plugin.IPlugin as plugin
class TestPlugin(plugin.IPlugin):
'''
classdocs
'''
def __init__(self, loader):
self.name='Test Plugin'
super(TestPlugin, self).__init__(loader)
Run Code Online (Sandbox Code Playgroud)
现在IPlugin看起来像这样:
class IPlugin(object):
'''
classdocs
'''
name=''
def …Run Code Online (Sandbox Code Playgroud) 我相信你们中的一些人会看到Google Wave的演示.我特别想知道拼写检查技术.一个拼写检查器是多么具有革命性,它通过弄清楚一个单词在句子中出现在哪里来提出这些建议?
我之前没有见过这种技术,但其他地方有这样的例子吗?
如果有,那么代码示例和文献在其工作中是什么?
我正在研究一个循环问题.在这个问题中,我们将对象放在一个大小的环上MAX,并从(0到MAX-1)分配ID.
我有三个简单的函数来测试范围包含.inRange(i,j,k)测试i是否在循环区间[j,k [(Mnemonic is i inRange(j,k))中.并且我对范围有相同的] j,k [和] j,k].
这三种方法中的代码看起来从一种方法复制到另一种方法:
def inRange(i,j,k):
"""
Returns True if i in [j, k[
* 0 <= i, j, k < MAX
* no order is assumed between j and k: we can have k < j
"""
if j <= k:
return j <= i < k
# j > k :
return j <= i or i < k
def inStrictRange(i,j,k):
"""
Returns True if i in ]j, k[ …Run Code Online (Sandbox Code Playgroud) 我有两个或更多的列表.有点像这样:
listX = [('A', 1, 10), ('B', 2, 20), ('C', 3, 30), ('D', 4, 30)]
listY = [('a', 5, 50), ('b', 4, 40), ('c', 3, 30), ('d', 1, 20),
('A', 6, 60), ('D', 7, 70])
Run Code Online (Sandbox Code Playgroud)
我想获得移动这样的重复元素的结果:我的结果是从listX + listY获取所有列表,但是在重复的情况下,例如('A', 1, 10), ('D', 4, 30)listX 的元素被呈现或者在listY中退出.结果就这样吧
result = [('A', 7, 70), ('B', 2, 20), ('C', 3, 30), ('D', 11, 100),
('a', 5, 50), ('b', 4, 40), ('c', 3, 30), ('d', 1, 20)]
Run Code Online (Sandbox Code Playgroud)
(A, 7, 70)通过添加('A', 1, 10)和 …
python ×11
reflection ×2
alignment ×1
attributes ×1
google-wave ×1
html ×1
ironpython ×1
methods ×1
operators ×1
python-c-api ×1