python中的类

class Animal:
    # 类属性
    habit = '睡觉'

    # 魔术方法(构造方法)
    def __init__(self, name, age, kind):
        # 对象属性
        # 对象中可以访问,类中不能访问
        self.name = name
        self.age = age
        self.kind = kind

    '''
    类方法
    1. 定义需要依赖装饰器@classmethod
    2. 类方法中参数不是一个对象,而是类
    3. 类方法中只可以使用类属性,不能使用对象属性
    4. 只能方法中有self出现,则类方法中都不能调用此方法,即类方法中不能使用普通方法
    
    类方法的作用:
    因为只能访问类属性和类方法,所以可以在对象创建之前,如果需要完成一些动作(功能),就可以使用类方法
    '''

    @classmethod
    def shout(cls):
        print('所有动物都会叫,所有动物都喜欢{}'.format(cls.habit))

    '''
    类中方法之间的调用需要通过self.方法名
    '''

    def eat(self, food):
        print('{}是只{},今年{}岁,ta喜欢{},ta正在吃{}'.format(self.name, self.kind, self.age, self.habit, food))

    '''
    静态方法:很类似类方法
    1. 依赖装饰器@staticmethod
    2. 静态方法无须传递参数(cls,self)
    3. 也只能方法类的属性和方法,对象是无法访问的
    4. 加载时机和类方法相同
    '''

    @staticmethod
    def shout2():
        print('所有动物都会叫,所有动物都喜欢{}'.format(Animal.habit))

    '''
    总结:
    类方法     静态方法
    不同:
        1. 装饰器不同
        2. 类方法是有参数的,静态方法没有参数
    相同:
        1. 只能访问类的属性和方法,对象的是无法访问的
        2. 都可以通过类名调用访问
        3. 都可以在创建对象之前使用,因为是不依赖于对象
    
    普通方法 与两者区别:
    不同:
        1. 没有装饰器
        2. 普通方法永远是要依赖对象的,因为每个普通方法都有一个self
        3. 只能创建了对象才可以调用普通方法,否则无法调用
    '''


cat1 = Animal('tom', 2, '小猫咪')
cat1.habit = '吃饭'
cat1name = cat1.name
cat1age = cat1.age
# print('动物共同的爱好是:', Animal.name) # 报错,类无法访问对象属性
print('动物共同的爱好是:', Animal.habit)
# 普通方法的调用
cat1.eat('猫粮')
# 类方法的调用
Animal.shout()
# 静态方法的调用
Animal.shout2()

------学习贵在分享,贵在记录,贵在总结。
原文地址:https://www.cnblogs.com/kevin1220/p/14422606.html