zoukankan      html  css  js  c++  java
  • 2019年8月11日 类的内置attr 函数

    类本质也是个对象

    class BlackMedium:
        feture='ugly'
        def __init__(self,name1,addr):
            self.name=name1
            self.addr=addr
    
        def sell_hourse(self):
            print('%s正在卖房'%self.name)
    
        def rent_hourse(self):
            print('%s租房子'%self.name)
    
    print(hasattr(BlackMedium,'sell_hourse'))#类本质也是对象,所以也能用attr方法

    》》》

    True

    len(str)-->str.__len__()


    class Foo:
        x=1
        def __init__(self,y):
            self.y=y
    
        def __getattr__(self, item):#调用一个不存在的属性时会触发
            print('调用一个不存在的属性时会触发,执行__getattr__')
    
        def __delattr__(self, item):
            print('删除一个属性时(无论类中是否存在)会触发,执行__delattr__')
           # self.__dict__.pop(item) #底层设置
    
        def __setattr__(self, key, value):
            print('设置属性时候会触发执行__setattr__')
            # self.key=value#设置属性,如果这么设置会进入无限递归,因为init中有设置
            self.__dict__[key]=value#本质是在操作字典,底层字典进行设置,这样不会进入递归
    
    f1=Foo(10)
    print(f1.y)
    
    print(getattr(f1,'y')) #eg:
    
    f1.sss
    del f1.w
    f1.z=2
    print(f1.__dict__)
    print(dir(Foo))
    #dir方法反馈的内置功能最全,从中得知上述3个下划线方法都内置有,
    #只不过通过重新def定义改变了原本定义的功能,由此可知对内置函数进行操作,必须对底层进行操作才不会报错





  • 相关阅读:
    拓扑排序
    Codeforces #503 C. Elections(贪心,逆向
    Codeforces #367 (Div. 2) D. Vasiliy's Multiset (trie 树)
    字典树
    最大子段和
    P1880 [NOI1995] 石子合并
    P1140 相似基因
    P1280 尼克的任务
    [BZOJ4064/Cerc2012]The Dragon and the knights
    [BZOJ4066]简单题
  • 原文地址:https://www.cnblogs.com/python1988/p/11336543.html
Copyright © 2011-2022 走看看