在不同文件中pickle。load类对象的时候要先导入类
把对象中所有的相同的东西放到静态字段中 (静态字段出现的目的就是为了节省内存,不用再重复创建)
一般情况下:自己访问自己的字段
规则:普通字段只能对象访问,静态字段用类去访问(万不得已可以使用访问)
类里面的方法必须用对象去访问
静态字段代码加载的时候
普通方法------>静态方法(1、去除self 2、加@staticmethod)类调用执行,适用于不用封装在对象中的值时候,可以节省内存
普通方法------>类方法 (1、self换成cls(输出的话为类名) 2、加classmethod)
普通方法------>属性(加@property) 将方法伪造成字段去访问(注意:1、用对象调用 2、不用加括号就可以执行)
成员修饰符: 私有字段:在字段前加__如(__字段),自能在内部访问,外部访问不到,如果有继承关系,也只有自己能访问,子类也不能执行
ps:一般别用 __类名.__xxx
类后面加括号执行__init__(self)
对象后面加(),执行__call__(self)方法
对象后面加[],执行__getitme__(self)方法
obj["k1"] = 123执行__setitme__(self,k1)方法
del boj["k1"] 执行__delitme__(self,k1)方法
print(对象)的时候执行__str__(self)方法,没有str方法的时候输出一个类的内存地址
类对象默认是不可以迭代的,如果想要循环一个对象的话就执行__iter__(self)方法
__dict__方法用于以字典的方式获取对象或类中封装的数据
如果既想执行子类的某一个方法,又想执行父类中相同的方法,就在子类的某一个函数下面写super(父类名,self).某方法
如果想在不修改原码的情况下,想在输出内容前后加上某些操作的话,可以用类的继承 如下:
class Foo(Too): def f1(self): print("123") super(Too,self).f1()
__import__("路径",formlist = True) 一定要写formlist,应为如果路径要是多层的话,不加的话只能找一层,加上的话就是找到底
单例模式:用于创建单个实例
class Foo: instance = None def __init__(self,name): self.name = name @classmethod def get_instance(cls): if cls.instance: reture cls.instance else: obj = cls("alex") css.instance = obj reture obj obj1 = Foo.get_instance() print(obj1) obj2 = Foo.get_instance() print(obj2)
异常处理: 通过异常处理,避免出现大黄页