类属性
1、类属性
就是不需要创建类的对象,就能通过类名.方法就可以直接调用类的属性和方法。
class animal:
name = "二哈" #如果在这个位置定义变量的话就是类属性
def __init__(self):
pass#占位符,起到占位作用,无实际意义,为了不报错
animal.name = "泰迪" #修改类属性时只需要通过类名.属性名
print(animal.name)
类方法
1、类方法就是在方法前面使用@classmethod,类方法的参数为cls
class dog:
name = "旺财" #类属性
@classmethod #定义类方法,必须在方法前用@classmethod,而且类方法的参数是cls不是self
def get_name(cls,name):
cls.name = name #在类方法中无法调用普通方法和属性
def __init__(self):
self.age = 23
def demo(self):
print("哈哈")
dog.name = "小王狗"
print(dog.name)
类属性、类方法在普通方法中调用,格式为:类名.类方法名 类名.类属性名
class dog:
name = "二哈"
@classmethod
def get_name(cls):
return cls.name
def demo(self):
print(dog.get_name()) #在普通方法中调用类属性、类方法,类名.类属性名或者类方法名,就可以调用
d1 = dog()
d1.demo()
静态方法
使用场景:当代码量特别大时,为了防止函数之间重名,就把函数放到类里面变为静态方法,避免函数重名带来的错误。
class dog:
@staticmethod #静态方法
def help():
print("这是第一个静态方法")
class A:
@staticmethod #静态方法
def help():
print("这是第二个静态方法")
dog.help() #调用静态方法,类名.静态方法名
A.help()