面向对象-内置方法

class Foo:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __getitem__(self,item):
        print('getitem')
        print(item)
        return self.__dict__.get(item)

    def __setitem__(self, key, value):
        print('setitem')
        print(key,value)
        self.__dict__[key]=value

    def __delitem__(self, key):
        print('delitem')
        print(key)
        # self.__dict__.pop(key)
        del self.__dict__[key]

obj=Foo('egon',18)
#查看属性:
obj['name']  # 相当于obj.name
obj['age']

#设置属性
obj['sex']='male'  #相当于 obj.sex='male'

print(obj.__dict__)
print(obj.sex)  # 为增加的 'male

#删除属性
del obj.name
del obj['age']
print(obj.__dict__)


# str 用法
d=dict({'name':'egon'})
print(isinstance(d,dict))
print(d)
class People:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def __str__(self):  #核心
        print('---->str')
        return 'name:%s,age:%s'%(self.name,self.age) #核心

obj=People('egon',18)
print(obj)

#__del__
f=open('settings.py')  # 操作系统打开了
f.read()
f.close() #回收操作系统的资源
print(f)
class Open:
    def __init__(self,filename):
        print('open file')
        self.filename=filename

    def __del__(self):
        print('回收操作系统资源:self.close()')

f=Open('settings.py')
# del f # f.__del__()
print('----main----')  # del f # f.__del__()

猜你喜欢

转载自www.cnblogs.com/hexiaorui123/p/10201527.html
今日推荐