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__()<br></br><br></br><br></br>
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))<br></br>#dir方法反馈的内置功能最全,从中得知上述3个下划线方法都内置有,<br></br>#只不过通过重新def定义改变了原本定义的功能,由此可知对内置函数进行操作,必须对底层进行操作才不会报错

![]()

<br></br><br></br><br></br><br></br>

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。