面向对象编程【1】

2024-01-03 00:09:12

【 一 】什么是面向过程

????????面向过程是一种编程范式,它将程序分解为一系列的步骤或过程,每个步骤按照顺序执行,通过在步骤之间传递数据来完成任务。在面向过程的编程中,程序的重点是算法和步骤的顺序,而不是数据和对象。

面向过程的特点包括:

1. 程序由一系列的函数或过程组成,每一个函数都是一个可执行的步骤,它接受输入并产生输出。

2. 数据通常被定义为全局变量, 在函数之间进行传递。

3. 程序的控制流程通过函数调用和顺序执行来实现。

4. 面向过程的程序设计更关注解决问题的步骤和流程, 对于大规模复杂的问题, 可能需要编写大量的函数和代码。

优点:

????????简单直观、易于理解和调试。就是一个复杂的问题可以拆分成好几个步骤进行实现。

缺点:

????????然而,随着程序规模的增大,面向过程的编程方式容易导致代码的维护困难和可读性差。。

【 二 】什么是面向对象

????????面向对象编程(Object-oriented Programming,简称OOP)是一种编程范式,它将程序设计的过程中的数据和操作封装成对象,并通过对象之间的交互来完成任务。

面向对象编程的核心概念包括以下几个方面:

  1. Class? (类): 类是对象的模板或者蓝图, 定义了对象的属性和行为。 它是创建对象的抽象模型。
  2. Object? (对象): 对象是类的实例, 具体的、具有的、 有具体值的一个实体。对象具有一组状态 (属性)和行为 (方法)。
  3. Encapsulation(封装):? ?封装是指将数据和操作封装在一个对象中, 对象对外部提供公共借口, 隐藏内部细节, 只暴露必要的信息。
  4. Inheritance(继承):? ?继承是指一个类可以继承另一个的属性和方法。几次可以通过创建新的嘞来扩展现有类的功能, 实现代码的重用性和维护性。
  5. Polymorphism(多态)?:? 多态是指同一个方法可以在不同的对象上具有不同的行为。通过多态,可以使得程序根据对象的类型选择合适方法执行。

????????面向对象编程具有许多优点,包括代码的可重用性、可维护性、灵活性和可扩展性。它能够更好地组织和管理复杂的程序,并使得代码更易于理解和修改。

【 三 】什么是程序

  • 程序 = 数据 + 功能
  • 编写程序的本质就是定义一系列的数据, 然后定义出一系列的功能来对数据进行操作。

????????编写程序的目的是为了解决特定的问题、自动化任务或实现特定的功能。程序可以在计算机上运行,并根据指定的逻辑和算法执行任务,从而实现预期的结果。

【 四 】类与对象

【 1 】前言

?????????在Python中,所有事物都可以表示为对象,包括数字、字符串、列表、元组等。但是,通过创建自己的类,您可以定义自己的对象类型,以更好地适应解决问题的需求。

【 2 】类的定义

????????在计算机编程中,类是一种用户定义的数据类型,它是面向对象编程(OOP)的基础。类定义了一组属性和方法,可以用来创建对象。一个类描述了一个对象的公共特征和行为,而对象是类的实例。

????????类主要由两部分组成:属性和方法。属性是类的数据成员,表示类的状态信息。方法是类的成员函数,用于实现类的行为和操作。

????????在Python中,使用class关键字来定义一个类。

语法格式:

class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

类实例化, 可以使用属性, 实际上, 创建一个类之后, 可以通过类名访问其属性

定义:

# 类的定义
class MyClass:
    x = 5

    def func(self):
        print('是怎么使用的:')
# 创建一个MyClass对象
res = MyClass()

# 访问对象的属性
print(res.x)

# 调用对象的方法
res.func()

# 输出
# 是怎么使用的:
# 5

????????这只是一个简单的示例,但它展示了类的基本结构和用法。通过定义类,可以更好地组织代码,使之更易于维护和扩展。

或者还可以:

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def func(self):
        print("他叫:" + self.name + "今年" + str(self.age) + "他是" + self.gender)

# 创建一个Person对象
person = Person("mao",25,'男')
# -----------------------------------------------
# 访问对象的属性和调用对象的方法是连在一起使用的

# 访问对象的属性
print(person.name,person.age,person.gender)

# 调用对象的方法
person.func()

# mao 25 男
# 他叫:mao今年25他是男

【 3 】属性引用和实例化

类对象支持两种操作: 属性引用和实例化。

属性引用使用和Python中所有的属性引用一样的标准语法:obj.name

类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

class NewCalss:
    '''
    一个简单的类示例
    '''
    num = 5201314
    def func(self):
        return 'I love you'

# 实例化类   
person = NewCalss()

# 访问类的属性和方法
print("NewClass 类的属性 num 为:", person.num)
print("NewClass 类的方法 func 输出为:", person.func())

#NewClass 类的属性 num 为: 5201314
# NewClass 类的方法 func 输出为: I love you

以上创建了一个新的类实例并将该对象赋给局部变量 person,person为空的对象。

?注意:在面向对象编程中, 属性引用和实例化是两个概念。

属性引用是指通过对象名后跟点(.)和属性名的方式来访问对象的属性。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age


person = Person('maodada', 26)

print(person.name)
print(person.age)

# maodada
# 26

????????在上面的例子中,我们创建了一个名为Person的类,并在__init__方法中初始化了nameage属性。然后,我们通过实例化该类创建了一个person对象,并使用属性引用来获取对象的属性值。

????????实例化是指通过类名后跟括号的方式来创建类的对象实例。在上面的示例中,我们使用Person("Alice", 25)语句来实例化一个Person对象。

通过实例化,我们可以创建多个对象,每个对象都具有独立的属性值。例如,我们可以创建多个不同的人员对象:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age


person = Person('maodada', 26)
person1 = Person('BOB',28)
print(person.name,person.age)
print(person1.name,person1.age)

# maodada 26
# BOB 28

????????通过实例化不同的对象,我们可以为每个对象设置不同的属性值。

????????属性引用和实例化是面向对象编程中非常重要的概念,它们允许我们通过对象来访问和操作属性,并创建多个相互独立的对象实例。

【 4?】修改对象的属性

可以直接修改上述person的值。

第一种:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person('maodada',26)
print('没修改之前的值:',person.name)

person.name = "BOB"
print('修改之后的值:',person.name)
# 没修改之前的值: maodada
# 修改之后的值: BOB

第二种:

使用方法修改属性值。

可以在类中定义一个方法来修改对象的属性值

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def xiugai(self,new_name):
        self.name = new_name

person = Person('maodada',26)
print('修改之前的值:',person.name)

person.xiugai("BOB")
print('修改之后的值:',person.name)

# 修改之前的值: maodada
# 修改之后的值: BOB

第三种:

使用setattr函数修改属性值。

Python 提供了一个内置函数 setattr,可以使用它来修改对象的属性值。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person('maodada',26)
print('修改之前的值:',person.name)

setattr(person,'name',"BOB")
print('修改之后的值:',person.name)

# 修改之前的值: maodada
# 修改之后的值: BOB

????????在上面的示例中,我们使用内置函数 setattr 来修改 person 对象的 n

ame 属性的值。具体来说,我们使用 setattr(person, "name", "Bob") 这行代码将 person.name 的值设置为 "Bob"

【 5?】构造函数

类有一个名为__init__() 的特殊方法(构造方法/构造函数),该方法在类实例化。时会自动调用

def __init__(self):
    self.set = {1,2,3,4}

类定义了__init__()方法,类的实例化操作会自动调用__init__() 方法。

class Person:
    def __init__(self):
        self.set = {1,2,3,4}

x = Person()
print(x.set)
# {1, 2, 3, 4}

当然, __init__() 方法可以有参数, 参数通过__init__() 传递到类的实例化操作上。

class hanshu:
    def __init__(self,tian,cai):
        self.r = tian
        self.w = cai

x = hanshu(5.0,-336.3)
print(x.r,x.w)
# 5.0 -336.3

文章来源:https://blog.csdn.net/m0_58310590/article/details/135342126
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。