python-datamodel相关内容
我有一个要覆盖__eq__方法的类。似乎我也应该覆盖__ne__方法。我应该将__ne__实现为__eq__的否定,还是这样做不好? class A: def __init__(self, state): self.state = state def __eq__(self, other): return self.state == oth
..
我正在使用 python 类的 set() 和 __hash__ 方法来防止在集合中添加相同的哈希对象.根据python 数据模型文档,set() 将相同的哈希对象视为相同的对象,只需添加一次. 但它的行为如下所示: class MyClass(object):def __hash__(self):返回 0结果 = 设置()结果.add(MyClass())结果.add(MyClass()
..
当我说“python 属性查找过程"时,我的意思是:当你编写 x.foo 时,python 做了什么?? 在网上搜索我没有找到太多关于此的文档,我发现的最好的论文之一将过程恢复到以下步骤(你可以看到完整的文章 这里) 如果 attrname 是 objectname 的特殊(即 Python 提供的)属性,则返回它. 检查 objectname.__class__.__dict__
..
在 Java 中,我可以使用 Iterator 然后使用 .remove() 迭代器的方法来移除迭代器返回的最后一个元素,像这样: import java.util.*;公共类 ConcurrentMod {公共静态无效主要(字符串[]参数){列表colors = new ArrayList(Arrays.asList("red", "green", "blue", "
..
所以我在这里寻找的是类似于 PHP 的 print_r 函数. 这样我就可以通过查看相关对象的状态来调试我的脚本. 解决方案 你真的把两种不同的东西混在一起了. 使用dir(),vars() 或 inspect 模块以获取您感兴趣的内容(我使用 __builtins__ 作为示例;您可以使用任何对象代替). >>>l = dir(__builtins__)>>>d = __b
..
我希望能够创建一个类(在 Python 中),一旦用 __init__ 初始化,它不接受新属性,但接受现有属性的修改.我可以看到几种hack-ish方法来做到这一点,例如有一个 __setattr__ 方法,例如 def __setattr__(self, attribute, value):如果不是 self.__dict__ 中的属性:打印“无法设置 %s"% 属性别的:self.__dic
..
这里有一个惊喜: >>>B类:...打印(当地人())... def foo(self):...打印(当地人())... print(__class__ in locals().values())...{'__module__': '__main__', '__qualname__': 'B'}>>>B().foo(){'__class__': , 'se
..
是否有 Python 内置数据类型,除了 None,对于其中: >>>不是 foo >没有任何真的 其中 foo 是那种类型的值?Python 3 怎么样? 解决方案 None 总是小于 Python 2 中的任何数据类型(参见 object.c). 在 Python 3 中,这被改变了;现在对没有合理自然排序的事物进行比较会导致 TypeError.来自 3.0“新功能"更
..
出于记录目的,我想检索 Python 对象的完全限定类名.(完全限定是指类名,包括包和模块名.) 我知道x.__class__.__name__,但是有没有简单的方法来获取包和模块? 解决方案 用下面的程序 #!/usr/bin/env python进口富定义全名(o):klass = o.__class__模块 = klass.__module__如果模块 == '内置':ret
..
如何获取在 Python 中定义方法的类? 我希望以下示例打印“__main__.FooClass": class FooClass:def foo_method(self):打印“foo"类 BarClass(FooClass):经过bar = BarClass()打印 get_class_that_defined_method(bar.foo_method) 解决方案 import
..
我正在尝试为我正在创建的创建向量表示的类实现切片功能. 到目前为止,我有这段代码,我相信它会正确实现切片,但是每当我调用 v[4] 之类的调用时,其中 v 是向量 python 会返回关于没有足够参数的错误.所以我想弄清楚如何在我的类中定义 getitem 特殊方法来处理普通索引和切片. def __getitem__(self, start, stop, step):索引 = 开始如果停
..
我正在阅读如何像计算机科学家一样思考,这是"Python编程"的介绍性文字;. 我想弄清楚乘法运算符( * )在应用于列表时的行为. 考虑函数 make_matrix def make_matrix(行,列):“">>>make_matrix(4,2)[[0, 0], [0, 0], [0, 0], [0, 0]]>>>m = make_matrix(4,2)>>>m [1] [1]
..
我有一个要覆盖 __ eq __ 方法的类.我也应该重写 __ ne __ 方法似乎很有意义.我应该这样实现 __ ne __ 作为对 __ eq __ 的否定,还是一个坏主意? A类:def __init __(自身,状态):self.state =状态def __eq __(自己,其他):返回self.state == other.statedef __ne __(自己,其他):不返回自己
..
在Python中, object .__ setattr __ 和 type .__ setattr __ 在属性 update AttributeError 的理由是什么?/em>如果类型具有作为 data 描述符的属性,但没有 __ set __ 方法?同样,如果在属性删除中, object .__ delattr __ 和 type .__ delattr __ 引发 AttributeEr
..
请考虑以下两个功能: def f1(): return "potato" f2 = lambda: "potato" f2.__name__ = f2.__qualname__ = "f2" 简短地对原始源代码进行内省,是否有任何方法可以检测到f1是def而f2是lambda? >>> black_magic(f1) "def" >>> black_magic(f2) "
..
遍历Python对象的方法并调用它们的正确方法是什么? 给出对象: class SomeTest(): def something1(self): print "something 1" def something2(self): print "something 2" 解决方案 您可以使用inspect模块获取类(或实例)成员: >>> class
..
我正在使用Python 2.x,并且有一个要从以太召唤出来的对象;它上的文档不是特别清楚.我希望能够获得该对象的属性列表以及每个属性的类型. 同样,我也想获得该对象的方法列表,以及我可以在该方法上找到的任何其他信息,例如参数数量及其各自的类型. 我觉得我只是在Google搜索中缺少正确的术语.我并不是想破坏细节,而是Active Directory,所以总是很有趣. 解决方案
..
如果我从中创建该对象的实例的基类是派生该实例的类的基类,那么如何找到在Python中创建对象实例的类的名称? 正在考虑检查模块可能对我有所帮助,但似乎并没有给我我想要的东西.除了解析__class__成员之外,我不确定如何获取此信息. 解决方案 您是否尝试过 __name__属性?即type(x).__name__将为您提供类的名称,我想这就是您想要的. >>> import
..
给出Python函数: def a_method(arg1,arg2): pass 如何提取参数的数量和名称。即,考虑到我对 func 的引用,我希望 func。[something] 返回(“ arg1”,“ arg2”)。 使用情况是我有一个装饰器,我希望以与实际函数中的键相同的顺序使用方法参数。即,当我调用 a_method(“ a”,“ b”)“ a,
..
所以我在这里寻找的是类似PHP的 print_r 函数。 因此,我可以通过查看问题对象的状态来调试脚本。 解决方案 您实际上是将两种不同的东西混合在一起。 使用 dir() , vars() 或 inspect 模块来获取您感兴趣的内容(我使用 __ builtins __ 作为示例;您可以使用任何对象代替。) >> l = dir(__ builtins__) >> d
..