十五、python 类和对象

# @remark:类与对象
""""""
"""一、类的定义
class 关键字

class 类名(父类名):
    '''类的帮组信息'''
    属性:类中方法外定义的变量,名称或形容词,实例的状态或者数据
    方法:类体中定义的函数,与函数一致,可以有参数列表和返回值。动词
"""

#1、实例
#类的声明  不传则默认父类是超类object
class Human:
    """人类"""
    #定义属性(类属性)
    message="这是类属性"

    #构造方法 -自动执行,直接返回该类的实例,如果不行则默认创建一个构造方法
    def __init__(self,name,age):
        # 实例属性(变量)
        self.name=name  #通过self绑定到自身
        self.age=age
        print("这是构造方法")
print(Human.message) #这是类属性

"""二、类的方法
1)实例方法
    -构造方法
2)类方法
3)静态方法"""

"""三、构造方法与实例化
作用:实例化对象
语法:def __init__(self,参数列表)
访问:类名(参数列表)"""
#实例化对象
person=Human("yanfa",18) #这是构造方法

#通过实例访问类属性
print(person.message) #这是类属性
#通过实例访问实例属性
print(person.name) #yanfa
print(person.age) #18

"""四、实例方法
作用:提供每个类的实例共享的方法
语法:def 方法名(self,参数列表)
访问:实例.方法名(参数列表)"""
# @remark:实例方法
class Human:
    # 实例方法
    def study(self,course):
        print(f"正在学习{course}")

person=Human()
person.study("python") #正在学习python


"""五、类方法
作用:可以操作类的详细信息,不需要实例化
语法:@classmethod
访问:类名.类方法名(参数列表)"""
# @remark:类方法
class Human:
    # 类属性
    pop = 0

    # 类方法 可以操作类的详细信息
    @classmethod  # 只能用这个装饰器
    def born(cls):  # cls是class的简写,是指类名本身
        print("这是类方法")
        cls.pop += 1


# 通过类名访问类方法
Human.born()  # 这是类方法
print(Human.pop)  # 1


"""六、静态方法
作用:不需要实例化对象
语法:@staticmethod
访问:类名.静态方法名()"""
# @remark:静态方法
class Human:
    # 定义静态方法
    @staticmethod
    def grow_up():
        print("这是静态方法")

#访问静态方法
Human.grow_up() #这是静态方法