- 調べものができるようになることは大事。まずは、こことここを読む
- コードを探すにはNULLEGEサーチも便利
- わからない関数、使われているオブジェクトに対して、OBJ.__doc__、OBJ.__class__、help(OBJ)を使う
z = 1.2 + 0.3j
z
Out[32]: (1.2+0.3j)
# zのクラスは?
z.__class__
Out[33]: complex
# zのdocは?
z.__doc__
Out[34]: 'complex(real[, imag]) -> complex number\n\nCreate a complex number from a real part and an optional imaginary part.\nThis is equivalent to (real + imag*1j) where imag defaults to 0.'
# こうやって表示したほうが読みやすい
print(z.__doc__)
complex(real[, imag]) -> complex number
Create a complex number from a real part and an optional imaginary part.
This is equivalent to (real + imag*1j) where imag defaults to 0.
# help()を使うと、classもdocも出る
help(z) # help(complex)と同じ記事が出る
Help on complex object:
class complex(object)
| complex(real[, imag]) -> complex number
|
| Create a complex number from a real part and an optional imaginary part.
| This is equivalent to (real + imag*1j) where imag defaults to 0.
|
| Methods defined here:
|
| __abs__(...)
| x.__abs__() <==> abs(x)
|
| __add__(...)
| x.__add__(y) <==> x+y
|
| __coerce__(...)
| x.__coerce__(y) <==> coerce(x, y)
|
| __div__(...)
| x.__div__(y) <==> x/y
|
| __divmod__(...)
| x.__divmod__(y) <==> divmod(x, y)
|
| __eq__(...)
| x.__eq__(y) <==> x==y
|
| __float__(...)
| x.__float__() <==> float(x)
|
| __floordiv__(...)
| x.__floordiv__(y) <==> x//y
|
| __format__(...)
| complex.__format__() -> str
|
| Convert to a string according to format_spec.
|
| __ge__(...)
| x.__ge__(y) <==> x>=y
|
| __getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
| __getnewargs__(...)
|
| __gt__(...)
| x.__gt__(y) <==> x>y
|
| __hash__(...)
| x.__hash__() <==> hash(x)
|
| __int__(...)
| x.__int__() <==> int(x)
|
| __le__(...)
| x.__le__(y) <==> x<=y
|
| __long__(...)
| x.__long__() <==> long(x)
|
| __lt__(...)
| x.__lt__(y) <==> x<y
|
| __mod__(...)
| x.__mod__(y) <==> x%y
|
| __mul__(...)
| x.__mul__(y) <==> x*y
|
| __ne__(...)
| x.__ne__(y) <==> x!=y
|
| __neg__(...)
| x.__neg__() <==> -x
|
| __nonzero__(...)
| x.__nonzero__() <==> x != 0
|
| __pos__(...)
| x.__pos__() <==> +x
|
| __pow__(...)
| x.__pow__(y[, z]) <==> pow(x, y[, z])
|
| __radd__(...)
| x.__radd__(y) <==> y+x
|
| __rdiv__(...)
| x.__rdiv__(y) <==> y/x
|
| __rdivmod__(...)
| x.__rdivmod__(y) <==> divmod(y, x)
|
| __repr__(...)
| x.__repr__() <==> repr(x)
|
| __rfloordiv__(...)
| x.__rfloordiv__(y) <==> y//x
|
| __rmod__(...)
| x.__rmod__(y) <==> y%x
|
| __rmul__(...)
| x.__rmul__(y) <==> y*x
|
| __rpow__(...)
| y.__rpow__(x[, z]) <==> pow(x, y[, z])
|
| __rsub__(...)
| x.__rsub__(y) <==> y-x
|
| __rtruediv__(...)
| x.__rtruediv__(y) <==> y/x
|
| __str__(...)
| x.__str__() <==> str(x)
|
| __sub__(...)
| x.__sub__(y) <==> x-y
|
| __truediv__(...)
| x.__truediv__(y) <==> x/y
|
| conjugate(...)
| complex.conjugate() -> complex
|
| Return the complex conjugate of its argument. (3-4j).conjugate() == 3+4j.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| imag
| the imaginary part of a complex number
|
| real
| the real part of a complex number
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
| Methods defined here:
|
| __abs__(...)
| x.__abs__() <==> abs(x)
-
- これは、complexクラスのオブジェクトxには、"x.__abs__()"という使い方があって、それは"abs()"と同じこととある。やってみる
z.__abs__()
abs(z)
| conjugate(...)
| complex.conjugate() -> complex
|
| Return the complex conjugate of its argument. (3-4j).conjugate() == 3+4j.
-
- これは、"x.__hoge__"という定義の仕方ではなく、関数conjugate(x)と使う、と言う意味。やってみる
conjugate(z) # エラーになる(conjugate()関数がcomplex配下の関数だから)
complex.conjugate(z) # エラーにならない
conjugate(z)
Traceback (most recent call last):
File "<ipython-input-70-d0155d636572>", line 1, in <module>
conjugate(z)
NameError: name 'conjugate' is not defined
complex.conjugate(z)
Out[71]: (1.2-0.3j)
| Data descriptors defined here:
|
| imag
| the imaginary part of a complex number
|
| real
| the real part of a complex number
z.imag
Out[72]: 0.3
-
-
- のように、「関数的に使う(z.imag()のように使う)」のではなくて、z.(zの)imagは?と問いかけて取り出す