在python中使用用户定义的类可sorting和/或可sorting时,需要重写/实现哪些方法? 有什么需要注意的? 我在我的解释器中键入dir({})以获取内置字典中的方法列表。 其中,我假设我需要一些实现一些子集 ['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__'] Python3与Python2相比,在哪些方法中必须实现差异?
>>> class A(object): pass … >>> A.__dict__ <dictproxy object at 0x173ef30> >>> A.__dict__.__dict__ Traceback (most recent call last): File "<string>", line 1, in <fragment> AttributeError: 'dictproxy' object has no attribute '__dict__' >>> A.__dict__.copy() {'__dict__': <attribute '__dict__' of 'A' objects> … } >>> A.__dict__['__dict__'] <attribute '__dict__' of 'A' objects> # What is this object? 如果我做了A.something = […]
我试图理解一些油滑的作品和它需要的东西。 这里是一个例子: package models case class Bar(id: Option[Int] = None, name: String) object Bars extends Table[Bar]("bar") { def id = column[Int]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column def name = column[String]("name") // Every table needs a * projection with the same type as the table's type parameter def * = id.? ~ […]
是否有一个神奇的方法,可以重载赋值运算符,如__assign__(self, new_value) ? 我想禁止重新绑定一个实例: class Protect(): def __assign__(self, value): raise Exception("This is an ex-parrot") var = Protect() # once assigned… var = 1 # this should raise Exception() 可能吗? 疯了吗? 我应该吃药吗?