python类方法和静态方法

class Person(object):
    type='human'
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def eat(self,food):
        print(self.name+'正在吃'+food)

    # 如果一个方法中没有用到实例对象的任何属性,可以将这个方法定义成static 也就是静态方法
    @staticmethod
    def demo():
        print("hello")

    #如果一个函数中只用到了类属性,我们可以把定义成一个类方法
    #类方法会有一个参数cls,也不需要手动的传参,会自动传参
    #其中cls指的是类对象是Person , 实例对象为 p=Pesrson()其中p为实例对象
    @classmethod
    def test(cls):
        print(cls.type)

p=Person("lisi",12)

p1=Person('zhangsan',16)

p.eat("狗粮")


p1.eat("猫粮")

#这种方式,不会自动给self传参,需要手动的指定self,所以会报错
#Person.eat("西红柿")
#正确方式
#Person.eat(p1,"西红柿")

#静态方法调用方式
#实用场景工具类
Person.demo()
p1.demo()

#类方法:可以实用实例对象和类对象调用
p1.test()
Person.test()

 

posted on 2021-09-30 10:07  groby  阅读(121)  评论(0编辑  收藏  举报