nnonkey k1n9的博客

当你为错过太阳而哭泣时,你也要再错过群星了——泰戈尔​

面向对象和面向编程

前言

学多学少不重要,只要每天学一点就ok!!!疯狂安慰摆烂的自己
以前老是不注重基础,语法嘛,随便学学,然后一直有看到面向对象和面向编程这两个名词,现在有了更深的印象。

面向编程和面向对象的简单理解

什么是面向编程,直接说一大堆代码理解不了我举例子,比如我要洗衣服,我需要放衣服,放洗衣粉,放水,开机,等步骤,是一个步骤一个步骤的来,这就是一个面向编程的过程,面向对象的话就不在乎什么过程了,我只在乎洗衣机能干嘛,它能洗衣服,人能干嘛,人能放衣服和开机,然后只需要对象的交互。

面向对象的特性

封装

什么是封装,还是举例子,比如洗衣机,我只需要知道洗衣机的作用,不需要知道洗衣机具体的工作原理,只用按下开机键,开机是个方法,方法里怎么写的不重要,封装在开机里面就好了,我们只需要使用

继承

这个是为了减少代码的重复度,比如学生,你要写作业,我也要写作业,你的方法和我的方法差不多,只是写作业的内容不同,为了避免代码太多,我们直接定义一个父类学生,不管大学生小学生都继承就好了,直接就有了写作业的方法

下面是代码实现过程

# 定义一个父类 Person
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name}")

# 定义一个子类 Student,继承自 Person
class Student(Person):
    def __init__(self, name, age, student_id):
        super().__init__(name, age)
        self.student_id = student_id

    def study(self):
        print(f"{self.name} is studying")

# 创建一个 Person 实例
person = Person("John", 25)
person.greet()  # 输出: Hello, my name is John

# 创建一个 Student 实例
student = Student("Alice", 20, "12345")
student.greet()  # 输出: Hello, my name is Alice
student.study()  # 输出: Alice is studying

在这个例子中,Person 是一个父类,它有一个 greet() 方法用于打招呼。Student 类是 Person 类的子类,通过继承 Person 类,Student 类获得了父类的属性和方法,并且还定义了自己的属性 student_id 和方法 study()。

子类的构造函数 __init__() 中使用 super().__init__(name, age) 调用父类的构造函数,以初始化父类的属性。然后,子类可以通过自己的方法 study() 来扩展父类的功能。

通过这样的继承关系,Student 类可以重用 Person 类中定义的通用行为,并且可以根据需要添加自己的特定行为。这样的继承机制可以提高代码的重用性和可读性,并为不同类型的对象提供适当的抽象。

多态

上面提到了,虽然我们都要写作业,但是我们内容不一样啊,所以多态就体现出来了,我们在子类可以重写这个方法,定义不同的细节内容

代码实现python对象

class Student:
    def __init__(self, name, student_id):
        # 表示对象有的属性
        self.name = name
        self.student_id = student_id
        self.grades = {"chinese": 0, "english": 0, "math": 0}
    
    #对象有的方法
    def set_grade(self, course, grade):
        if course in self.grades:
            self.grades[course] = grade

    def print_grade(self):
        for course in self.grades:
            print(f"{course}的分数是{ self.grades[course]}")

#创建对象
xiaoliao = Student("xiaoliao", 55555)
#调用对象的方法
xiaoliao.set_grade("english",80)
print(xiaoliao.print_grade())

本原创文章未经允许不得转载 | 当前页面:nnonkey k1n9的博客 » 面向对象和面向编程

评论