Python 测开27期 - julia - 学习笔记 - 面向对象

面向对象是什么

  • Python 是一门面向对象的语言
  • 面向对象编程(OOP):Object Oriented Programming

所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界,按照现实世界中的逻辑去处理问题,分析问题中参与其中的有哪些实体,这些实体应该有什么属性和方法,我们如何通过调用这些实体的属性和方法去解决问题。

两种编程思想

  • 面向过程
    • 一种以过程为中心的编程思想
    • 首先分析解决问题所需要的步骤
    • 然后用函数将这些步骤一步一步的实现
    • 最后按顺序依次调用运行
  • 面向对象
    • 是一种更符合我们人类思维习惯的编程思想
    • 面向对象开发就是不断的创建对象,使用对象,操作对象做事情
    • 可以将复杂的事情简单化

类与对象

  • 类(class): 用来描述具有相同的属性和方法的对象的集合。它定义了集合中每个对象所共有的属性和方法。
  • 对象(object):也称为类的实例,是一个具体存在的实体。

类的定义

  • class 关键字
# 语法
class 类名(父类名):
    """类的帮助信息"""
    属性
    方法
# class_def.py

# 类的声明
class Human(object):
    """人类"""

    # 定义属性(类属性)
    message = "这是类属性"


# 通过类访问类属性
print(Human.message)

类的方法

  • 实例方法
    • 构造方法
  • 类方法
  • 静态方法

构造方法与实例化

  • 作用:实例化对象
  • 语法:def __init__(self, 参数列表)
  • 访问:类名(参数列表)
# constructor_method.py

class Human:

    # 定义属性(类属性)
    message = "这是类属性"

    # 构造方法
    def __init__(self, name, age):
        # 实例变量
        self.name = name
        self.age = age
        print("这是构造方法")


# 实例化对象
person = Human("哈利波特", 12)

# 通过实例访问类属性
print(person.message)

# 通过实例访问实例属性
print(person.name)
print(person.age)

实例方法

  • 作用:提供每个类的实例共享的方法
  • 语法:def 方法名(self, 参数列表)
  • 访问:实例.方法名(参数列表)
# instance_method.py


class Human:

    # 实例方法
    def study(self, course):
        print(f"正在学习{course}")

# 实例化
person = Human()

# 通过实例访问实例方法
person.study("python")

类方法

  • 作用:可以操作类的详细信息
  • 语法:@classmethod
  • 访问:类名.类方法名(参数列表)
  • 类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量
# class_method.py

class Human:

    # 类属性
    population = 0

    # 类方法
    @classmethod
    def born(cls):
        print("这是类方法")
        cls.population += 1


# 通过类名访问类方法
Human.born()
print(Human.population)

静态方法

  • @staticmethod
  • 类的静态方法中无法调用任何类属性和类方法。
# static_method.py

class Human:

    # 静态方法
    @staticmethod
    def grow_up():
        print("这是静态方法")


# 通过类名访问静态方法
Human.grow_up()