python学习day28 内置的类方法2 hashilib初识

 item系列

__getitem__

__setitem__

__delitem__

操作对象跟操作字典一样

class Foo:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

    def __getitem__(self, item):
        if hasattr(self,item):
            return self.__dict__[item]

    def __setitem__(self, key, value):  # 两个参数
        self.__dict__[key] = value

    def __delitem__(self, key):
        del self.__dict__[key]

f = Foo('egon',38,'')
print(f['name'])  # 对__getitem__进行操作  返回egon
f['hobby'] = ''
print(f.hobby, f['hobby'])  # 男 男
del f.hobby      # 通过__delattr__方法实现  父类object 原生支持  __delattr__
del f['hobby']   # __delitem__要通过自己实现的
print(f.__dict__)

__new__

__init__ 初始化方法
__new__ 构造方法 : 创建一个对象 传入cls参数

class A:
    def __init__(self):
        self.x = 1
        print('in init function')
    def __new__(cls, *args, **kwargs):
        print('in new function')
        return object.__new__(A, *args, **kwargs)

a1 = A()

输出:

单例模式:一个类 始终 只有 一个 实例
当你第一次实例化这个类的时候 就创建一个实例化的对象
当你之后再来实例化的时候 就用之前创建的对象

猜你喜欢

转载自www.cnblogs.com/happyfan/p/10171054.html