What types of attributes does the the dir function give in python?
我在某个地方读到,python中的所有内容都是一个对象。我想,2号怎么样?如果我在python解释器中键入"dir(2)",将得到以下输出:
dir(2)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real']< /块引用>< /块引用>
显然,数字2是一个具有这些属性的对象。我得到了数个属性的名称,比如uuu-add_uuu和covergent。但是如果我尝试2.convertive(),我会得到一个错误
2、共轭()语法错误:无效语法
然而,dir(2j)作为一种方法具有共轭性,当我使用方法共轭时不会得到错误。
2J.共轭()-2J
和
2、共轭()二
也不会给我任何问题。
更奇怪的是,2。uuu add_uu()和2。uu add_uuu给出了一个错误,尽管它是2的属性。我认为加法指的是+运算。那么,为什么它在属性列表中显示为"添加",而不是显示为+?dir(2)是变量列表和方法列表,还是列出其他内容?什么是事物和事物的区别?什么时候可以用常规的方法调用一个方法,比如object.method(),什么时候你必须做一些奇怪的事情,比如2+2而不是2.add(2)?
conjugate 是int 的一种方法,可以应用于int对象。为了演示所有这些工作:
1
2
3 x = 2; x.conjugate()
(2).conjugate()
2 .conjugate() # note the whitespace由于python解析器具有特殊的数字文本处理功能,因此不允许使用这种笨拙的语法:
1 2.conjugate()正如@ignacio所解释的,这是因为解析器看到
2. 并将其视为一个浮点,即像(2.)conjugate() 一样,这不是一个有效的语法。但是,除了将其与此语法一起使用之外,还允许进行上述操作。
对于
__add__ 方法,__add__ 方法允许类型定义/重写+ 操作器如何应用于它们。当您执行a+b 时,解释器调用a.__add__(b) 或b.__add__(a) (机制比这更复杂)。一般来说,你不应该直接打电话给
__add__ 。解析器看到"."并认为应该有一个浮点。
1
2 >>> (2).conjugate
<built-in method conjugate of int object at 0x2242140>其余的:
python语言参考,数据模型部分