内蔵の方法
データの任意のタイプは、ビスの一部多かれ少なかれ方法を取ります
ダブルダウン方式: __init__
__str__
__xxx__
各書籍のPythonの種では、また、マジックメソッドの組み込みメソッドとして知られています
特長:深刻ではない、呼び出しは常に良いの呼び出しではありません
例:
'abc'.split('b') # 正经调用str类型的split方法
print('abc' + 'efg') # 直观
ret = 'abc'.__add__('efg') # 不直观,不正经调用方法
print(ret)
重要な方法
__str__
オブジェクトが印刷されたデフォルトの印刷は、オブジェクトのメモリアドレスですが、私のクラスで定義された役割に対応していない
__str__
デフォルトの印刷オブジェクトのメモリアドレス交換する同等の方法、戻ら、注:文字列が戻らなければなりませんコンテンツ例えば、プリント(OBJ)(objがターゲットである)、実際には、常に呼び出されると、
obj.__str__()
このメソッドの戻り値を印刷し、(そのようなクラスの注釈として)の印刷を行うのは簡単
# __str__ class Course: course_lst = [] def __init__(self,name,period,price): self.name = name self.period = period self.price = price def __str__(self): return '%s,%s,%s'%(self.name,self.period,self.price) # python = Course('python','6 months',19800) # linux = Course('linux','5 months',17800) # Course.course_lst = [python,linux] # for course in Course.course_lst: # print(course) # 打印一个对象总是打印内存地址,这个数据对我们来说没有用 # 打印这个对象的时候查看这个对象的相关信息
__new__
オブジェクトのインスタンス化プロセスのタイプは、プログラムは、第1のメモリアドレスを作成し、呼び出して
__init__
、誰かが私を助けていたので、私たちはこのメモリ空間を開く助け、私たちは物事のインスタンス化のメモリ空間を開くために世話を決して、その__new__
方法関係ないんオブジェクトが、我々は新しいを所有することはできません
- テストケース
class A: def __new__(cls,*args,**kwargs): print('执行我了') def __init__(self): print('init') self.name = 'alex' A() # 结果 # 执行我了 # 默认来说,__new__方法是替我们开辟内存空间,但是我们这里将__new__执行的改为了打印, # __init__没有内存空间,也就不会执行了 # new是没有self参数
アルゴリズムへ#入門 - 顕微鏡
#23デザインパターン - マクロ