#-*-coding:utf-8-*-
'''
__init__方法
创建一个类的新实例时,参数被包括在圆括号内跟在类名后面,从而被传递给__init__方法
'''
# class Person:
# def __init__(self,name):
# self.name = name
# def sayHi(self):
# print('Hello,my name is',self.name)
# p = Person('duanchunyang')
# p.sayHi()


'''
__del__方法
主要作用是释放被占用的资源,在Python中是析构函数
'''
# class Room:
# count=0
# def __init__(self,name):
# self.name = name
# print('初始化,传入的名称是%s'%self.name)
# Room.count += 1
# def __del__(self):
# print('%s 说 byebye'%self.name)
# Room.count -= 1
# if Room.count == 0:
# print('这个房间里就剩下我一个人了')
# else:
# print('这个房间里还有%d个人'%Room.count)
# def sayHi(self):
# print('大家好,我的名字是%s'%self.name)
# def howMany(self):
# if Room.count == 1:
# print('这个房间里就剩下我一个人了')
# else:
# print('这个房间里还有%d 个人'%Room.count)
# if __name__ == '__main__':
# room = Room('duochunyuan')
# room.sayHi()
# room.howMany()
# room1 = Room('lintiantian')
# room1.sayHi()
# room1.howMany()
# room.__del__()


'''
__new__方法
在创建对象时被调用,返回当前对象的一个实例,__init__是创建完对象后才被调用
'''
#
# class Mynew(object):
# def __init__(self):
# print('__init__')
# def __new__(self):
# print('__new__')
# if __name__=='__main__':
# mynew =Mynew()
# mynew

'''
__setitem__方法
简单地重定向到真正的字典self.data,让他进行运作
'''
# class MySetitem:
# def __setitem__(self, key, value):
# print('key=%s,value=%s' % (key,value))
#
# mysetitem = MySetitem()
# mysetitem['dcy'] = 'duanchunyang'
# mysetitem['mxl'] = 'maxianglin'
# mysetitem['ltt'] = 'lintiantian'

'''
__getitem__方法
重定向到字典,返回字典的值
'''
# class MyGetitem:
# def __getitem__(self, key):
# if key == 'Thank you':
# return 'You are welcome!'
# elif key == 'Sorry':
# return 'That is all right'
# elif key == 'Do you like me':
# return 'T love you'
# else:
# return 'you can go'
#
# if __name__=='__main__':
# mygetitem = MyGetitem()
# print(mygetitem['Thank you'])
# print(mygetitem['Sorry'])
# print(mygetitem['Do you like me'])
# print(mygetitem[''])


'''
__delitem__方法
调用"del|实例对象[key]"时调用
'''
# class MyDelitem:
# def __delitem__(self, key):
# print('delete item:%s' %key)
# mydekitem = MyDelitem()
# del mydekitem['dcy']

'''
__cmp__方法
用来比较两个实例对象,当使用==比较类实例时,python会替你调用__cmp__专用方法
'''
class MyCmp:
def __cmp__(self, other):
print('__cmp__ is called')
return 0
if __name__ == '__main__':
mycmp1 = MyCmp()
mycmp2 = MyCmp()
print(mycmp1==mycmp2)