面向对象的进阶——类属性和类方法

类属性

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值