类方法
特点:
1。定义需要依赖类装饰器@classmethod
2.类方法中的参数不是一个对象,而是当前类
print(cls) <class ‘main.Dog’>
3.在类方法中只可以使用类属性,不能访问self属性 之所以是这种情况 是因为类属性先于对象属性创建,这时候对象属性还没有创建
4.类方法不依赖对象,Dog.test()这样写也可以 但是Dog.run()不可以
5.类方法不可调用普通方法
6.类方法的用处 因为只能访问类属性和类方法,所以可以在对象创建之前,如果需要做一些功能或动作,就可以用类方法
静态方法 静态方法和类方法都依赖Person()的调用 不能用对象调用
静态方法:很类似类方法
1.需要装饰器@staticmethod
静态方法是无需传递参数的 cls,self都不能出现在静态方法中
他只能访问类的属性和方法,对象是无法访问的
加载时机:同类方法 只要类被创建,就会存储下
总结: 类方法 静态方法
不同:
1.装饰器不同
2.类方法是有参数的,静态方法没有参数
相同:
1、只能访问类的属性和方法,对象的是无法访问的 调用静态方法 : Person.static
2.都可以通过类名调用访问 Person.static()
3都可以在创建对象之前使用,因为是不依赖与对象
普通方法 与两者的区别:
不同:
1.没有装饰器
2.普通方法永远是要依赖对象,因为每个普通方法都有一个self
3.只有创建了对象才可以调用普通方法,否则无法调用
// # 类方法
# 特点:
# 1。定义需要依赖类装饰器@classmethod
# 2.类方法中的参数不是一个对象,而是当前类
# print(cls) <class '__main__.Dog'>
# 3.在类方法中只可以使用类属性,不能访问self属性 之所以是这种情况 是因为类属性先于对象属性创建,这时候对象属性还没有创建
# 4.类方法不依赖对象,Dog.test()这样写也可以 但是Dog.run()不可以
# 5.类方法不可调用普通方法
# 6.类方法的用处 因为只能访问类属性和类方法,所以可以在对象创建之前,如果需要做一些功能或动作,就可以用类方法
class Dog:
name='小黄狗' #类属性
def __init__(self,name):
self.name=name
def run(self): #普通方法必须依赖self对象而存在 但类方法不需要对象就可以调用
print('{}在院子里跑来跑去!'.format(self.name))
def eat(self)