目录
-
实战题目
-
设计模式之单例模式
-
pickle模块
内容
实战题目
编写元类规定对象的所有数据值转大写
obj.name = 'zhou'
print(obj.name)打印结果为 ZHOU
class MyTypeClass(type): def __call__(self, *args, **kwargs): args = [] for i in args: args.append(i.upper()) return super().__call__(*args, **kwargs) class MyClass(metaclass=MyTypeClass): def __init__(self, name, gender): self.name = name self.gender = gender def __setattr__(self, key, value): self.__dict__[key] = value.upper() obj = MyClass('jason', 'male') print(obj.name) print(obj.gender) obj.hobby = 'jdb' print(obj.hobby)
设计模式
在IT行业中设计模式共有23种 可以分为三大类:1.创建型 2.结构型 3.行为型
设计模式之单例模式
单例模式:一个类只能产生一个对象,用于节省资源
有很多编写方式:
class Single(type): new_obj = None def __call__(self, *args, **kwargs): if not self.new_obj: obj = super().__call__(*args, **kwargs) self.new_obj = obj return self.new_obj return self.new_obj class MyClass(metaclass=Single): def __init__(self, name): self.name = name obj1 = MyClass('jason') obj2 = MyClass('tony') print(id(obj1), id(obj2)) print(obj1.__dict__,obj2.__dict__)
单例模式的实现方式不固定 有很多种:
https://www.cnblogs.com/Dominic-Ji/p/10525994.html
pickle模块
将该模块的目的仅仅是为了在选课系统中使用 并且该模块只支持python
需求:将对象保存到文件 并且取出来之后还可以使用对象的功能
import pickle class MyClass(object): school = 'school' def __init__(self, name): self.name = name def choose_course(self): print('%s正在选课'%self.name) obj = MyClass('jason') print(obj.school) obj.choose_course()
pockle模块也可以:
# with open(r'%s'%obj.name,'wb') as f: # pickle.dump(obj, f) with open(r'jason','rb') as f: data = pickle.load(f) print(data) print(data.name) print(data.school)