• 类与类之间的关系


    依赖关系:

    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特

  • 相关阅读:
    install source mysql 5.7.9
    直接复制php的安装目录部署到其他服务器的时候,无法运行
    对硬盘进行分区时,GPT和MBR有什么区别?
    centos添加永久静态路由
    Windows2008R2安装远程桌面终端授权
    nginx搭建的cdn服务器的nginx.conf配置文件
    centos6.6配置vlan三层交换
    ESXI 6.0 嵌套虚拟化 Hyper-v
    VLAN的Hybrid和Trunk端口有何区别
    如何添加使用博客RSS订阅
  • 原文地址:https://www.cnblogs.com/xihuanniya/p/9750237.html
Copyright © 2020-2023  润新知