1.并行与并发
并发:假的多任务,一个 cpu轮询运行多个程序,表面上看着像同时运行,其实是依次运行。
并行:真的多任务,多个CPU同时处理多个任务,同时进行
2.类对象、实例对象、类属性、实例属性、静态方法、实例方法、类方法
- 类属性和实例属性
- 类方法、实例方法、静态方法
三种方法在内存中都归属于类,区别在于调用方式不同。
- 类方法:由类调用,至少一个cls参数,执行类方法时,自动将调用该方法的类赋值给cls
- 实例方法:由对象调用,至少一个self参数,执行实例方式时,自动将调用该方法的对象赋值给self
- 静态方法:由类调用,无默认参数。
相同点:
- 都归属于类
不同点:
- 定义方式不同,类方法@classmethod 静态方法@staticmethod 实例方法def test(self,)
- 调用方式不同,类对象可以调用类方法,静态方法,实例对象可以调用这仨个
- 传参数不同,类方法调用时默认传参数cls(类对象赋值给cls),实例方法默认传参数self(实例对象赋值给self)
问:为什么要有静态方法呢?
本来可以把静态方法提出来与类评级,当作一个文件的普通方法使用。将来调用的时候会直接调用就行了.
比如我们有两个类Person和Animal还有一个hanmao的方法,两个类都希望有个方法不想使用类方法和实例方法,因为不需要传用到cls和self,所以都准备调用hanmao这个方法,因为都有汗毛,但是动物与人的汗毛不一样长,那么解决方法就有这么几种,使用不同的命名,person_hanmao和animal_hanmao,或者定义一个方法内部进行判断,这样倒是可以但是如果类多的话,那么就会有很多很长的代码,而且后期不好维护,比如有一天那个类不用了,还要去方法中删除,容易忘记删除等问题。所以这不是好的解决方法,所以就出现了静态方法,直接放在每一个类中,解决了不传参数问题,也解决了命名问题。