zzs0626

目录

  • 实战题目

  • 设计模式之单例模式

  • 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)

 

相关文章: