类和对象            

#类和对象
#类:具有相同特征或行为的某一类集合
#语法:
#class 类名():
#    类体
#命名:大小驼峰式命名
#创建对象:对象变量=类名(),类的实例化
#类的属性(包括类属性,实例属性)
#方法:类里面的函数叫方法;带有self的方法叫实例方法
#没有self的方法:
# 静态方法:放在类下面的普通方法,作用方便代码管理;使用类名.方法名/实例.方法名调用;
# 类方法:cls表示类本身;使用类名.方法名/实例.方法名调用;

class People:
    #初始化方法,定义具体的对象,使用__init__方法
    def __init__(self,name,age):
        """self:在类的定义中,表示实例自己"""
        self.name =name  #实例属性
        self.age =age

    height =180  #类属性,所有成员都具备的属性
    weight =70

    #实例方法
    def food(self):
        """实例方法:带有self的方法叫实例方法"""
        print("{}喜欢吃的食物是latiao".format(self.name))

    def drink(self,milk):
        print('{}喜欢喝{}'.format(self.name,milk))
        self.food()  #实例方法之间相互调用

    def color(self):
        self.phone('oppo')  # 实例方法调用静态方法
        self.study()  # 实例方法里面调用类方法

    @staticmethod
    def phone(oppo):
        """静态方法:放在类下面的普通方法,作用方便代码管理"""
        print("这是一个静态方法{}".format(oppo))
        People.study()  #静态方法里面调用类方法

    @classmethod
    def study(cls):
        """类方法:cls表示类本身"""
        print("大佬的身高是{}".format(cls.height))  #获取类属性
        girl =People('xixi',16)
        girl.drink('冷饮')  #类方法里面调用实例方法,必须先实例化



#实例化对象,初始化;使用对象的时候会自动调用__init__方法
boy =People('hehe',18)
#获取实例属性:实例名称.属性名
print(boy.name)

boy.drink('牛奶')
boy.color()

#修改类属性:类名.属性名=新的属性值
People.height =170

#获取类属性:
print(People.height) #类名.属性名
print(boy.age)  #实例名称.属性名