https://blog.csdn.net/weixin_45912307/article/details/108964913
定义与调用格式:
def 方法名(self[,参数1,参数2]): print('{}'.format(参数名)) 对象名 = 类名() 对象名.方法名(参数值)定义类方法中不携带参数时需要加self调用,携带参数时直接使用变量名调用
1. 特点
定义需要依赖装饰器@classmethod类方法中参数不是一个对象,而是类 print(cls) #<class __main__.Dog'>类方法中只可以使用类属性类中方法的调用,需要通过self.方法名()类方法中不可以使用普通方法2. 类方法作用: 因为只能访问类属性和类方法,所以可以在对象创建之前,如果需要完成一些动作(功能)
3. 格式
@classmethod def test(cls,[参数]): [print(cls.属性名) cls.属性名= 新值] 类名.test()1. 特点
需要装饰器@staticmethod静态方法无需传递参数(cls、self)也只能访问类的属性和方法,对象的是无法访问的加载时机同类方法2. 格式
@staticmethod def test([参数]): print(类名.__属性名) 类名.test()3. 调用 : 主要是用来存放逻辑性的代码,逻辑上属于类,但是和类本身没有关系,也就是说在静态方法中,不会涉及到类中的属性和方法的操作
1. 不同之处
装饰器不同类方法有参数,静态方法无参数2. 相同之处
只能访问类的属性和方法,对象的是无法访问都可以通过类名调用访问 类名.test()都可以在创建对象之前使用,因为不依赖于对象定义: 第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法) 调用: 只能由实例对象调用。
**定义:**使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法); 调用: 实例对象和类对象都可以调用。
定义: 使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法; 调用: 实例对象和类对象都可以调用。
