类方法与静态方法

类方法和静态方法

class Person(object):
    __slots__ = ("name","age")

    # 类属性
    num = 0

    # 构造函数
    def __init__(self,name,age):
        # 实例属性
        self.name = name
        self.age = age

    # 实例函数:形参列表的第一个参数必须为self,表示当前对象
    def show(self):
        print("show",self)

    # 类函数:形参列表的第一个参数为cls,表示当前类
    # 使用@classmethod装饰器修饰一个函数,该函数被称为类函数
    # cls和self类似,都不是关键字,可以是任意的标识符
    @classmethod
    def func1(cls):
        print("func11", cls)

        # cls就相当于是当前类Person,所以可以通过cls创建对象
        c = cls("bbb",6)
        # 在类函数中调用实例 函数,必须先通过cls创建对象,然后再调用
        # c.show()

    # 静态函数
    @staticmethod
    def func2():
        print("func~~2222")


p = Person("aaa",5)

# 实例函数只能通过对象调用
p.show()

# 类函数可以通过类名或者对象调用
p.func1()
Person.func1()

# 静态函数可以通过类名或者对象调用
p.func2()
Person.func2()

'''
show <__main__.Person object at 0x000002C03C531518>
func11 <class '__main__.Person'>
func11 <class '__main__.Person'>
func~~2222
func~~2222
'''
# 如果需要在函数中创建当前类的对象,则选用类函数
# 如果需要封装一个工具类,建议使用类函数或者静态函数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值