1、类变量和实例变量
-
类变量:定义在类里面,实例方法方法外面的变量
-
实例变量:定义在实例方法里面的变量,常用:self.变量赋值
#例:
class Person:
max_age = 150 #类变量/属性
def __init__(self,age):
self.age = age #实例变量/属性
-
相同点:对象可以通过 对象名.属性名 调用对象属性和类属性
-
不同点:而类也可以通过 类名.属性名 调用类的属性,但是不能通过这种方式调用对象的属性
-
注意事项:对象不能修改类属性,如果通过对象.类属性修改值,则是给对象添加属性
2、类方法、静态方法和实例方法
-
类方法:
定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
调用:实例对象和类对象都可以调用。
使用场景:使用装饰器@classmethod。
原则上,类方法是将类本身作为对象进行操作的方法。假设有个方法,且这个方法在逻辑上采用类本身作为对象来调用更合理,那么这个方法就可以定义为类方法。另外,如果需要继承,也可以定义为类方法。
-
静态方法:
定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
调用:实例对象和类对象都可以调用。
使用场景:使用装饰器@staticmethod。
静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,逻辑上属于类,但是和类本身没有关系,也就是说在静态方法中,不会涉及到类中的属性和方法的操作。可以理解为,静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。
-
实例方法:
定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法)
调用:只能由实例对象调用。
使用场景:简而言之,实例方法就是类的实例能够使用的方法。这里不做过多解释。