依赖关系:
class Elephant:
def __init__(self, name):
self.name = name
def open(self, ref): # 想要的是一个冰箱。 是哪个冰箱没有制定
print("冰箱哥哥, 开门把")
ref.open_door()
def close(self, ref): # 依赖关系
print("冰箱哥哥, 我进来了。 关门把")
ref.close_door()
def jin(self):
print("进冰箱装自己")
class Refrigerator:
def open_door(self):
print("冰箱陌陌的打开了自己的门")
def close_door(self):
print("冰箱陌陌的关上了自己的门 ")
alex = Elephant("李杰")
bx1 = Refrigerator()
alex.open(bx1)
alex.jin()
alex.close(bx1)
关联关系
class Boy(object):
def __init__(self,name,nvpengyou=None):
self.name = name
self.nvpengyou = nvpengyou
def yujian(self,nv):
self.nvpengyou = nv
def chi(self):
if self.nvpengyou:
print('随便吃!%s和%s'%(self.name,self.nvpengyou.name))
else:
print('单身狗,吃什么饭')
class Girl:
def __init__(self,name):
self.name = name
alex = Boy('金角')
obj = Girl('女')
alex.yujian(obj)
alex.chi()
特殊成员:
class Foo:
def __init__(self):
print('初始化')
#类名() __init__()构造方法
obj = Foo()
call 靠
class Foo:
def __call__(self, *args, **kwargs):
print('我是靠')
obj = Foo()
#对象() __call__()调用对象自动执行靠方法
obj()
getitem 盖特唉特木
class Foo:
def __getitem__(self, item):
print('我是getitem',item)
return '哈哈'
obj = Foo()
#对象[xxx] 从对象中获取数据,默认执行 __getitem__(self, item):
print(obj['杰大大'])
setitem 赛特爱特木
class Foo:
def __setitem__(self, key, value):
print(key,value)
obj = Foo()
obj['汪峰'] = '章子怡'
delitem
class Foo:
def __delitem__(self, key):
print(key)
obj = Foo()#删除字典
del obj['麻花藤']
add
class Foo:
def __init__(self,a):
self.a = a
def __add__(self, other):
return self.a + other.a
obj = Foo(1)
obj1 = Foo(555)
s = obj+obj1
print(s)
enter 恩特 exit 艾克c特
class Foo:
def __enter__(self):
print('进入')
return '周润发'
def __exit__(self, exc_type, exc_val, exc_tb):
print('出来')
obj = Foo()
with obj as xx:
print(xx)
print('你好我叫杰')
hash 干掉可哈希
class Foo(object):
__hash__ = None
obj = Foo()
str
class Boy(object):
def __init__(self,name,didian,dianhua):
self.name = name
self.didian = didian
self.dianhua = dianhua
def __str__(self):
return '%s,%s,%s'%(self.name,self.didian,self.dianhua)
obj= Boy('alex','沙河','10086')
print(obj)
new 牛
class Boy(object):
def __new__(cls, *args, **kwargs):
print('先跑new,的结果在给init,init才有结果')
return object.__new__(cls)#才是创建对象开辟内存
obj = Boy()
object 奥布zhA特