面向对象编程【1】
【 一 】什么是面向过程
????????面向过程是一种编程范式,它将程序分解为一系列的步骤或过程,每个步骤按照顺序执行,通过在步骤之间传递数据来完成任务。在面向过程的编程中,程序的重点是算法和步骤的顺序,而不是数据和对象。
面向过程的特点包括:
1. 程序由一系列的函数或过程组成,每一个函数都是一个可执行的步骤,它接受输入并产生输出。
2. 数据通常被定义为全局变量, 在函数之间进行传递。
3. 程序的控制流程通过函数调用和顺序执行来实现。
4. 面向过程的程序设计更关注解决问题的步骤和流程, 对于大规模复杂的问题, 可能需要编写大量的函数和代码。
优点:
????????简单直观、易于理解和调试。就是一个复杂的问题可以拆分成好几个步骤进行实现。
缺点:
????????然而,随着程序规模的增大,面向过程的编程方式容易导致代码的维护困难和可读性差。。
【 二 】什么是面向对象
????????面向对象编程(Object-oriented Programming,简称OOP)是一种编程范式,它将程序设计的过程中的数据和操作封装成对象,并通过对象之间的交互来完成任务。
面向对象编程的核心概念包括以下几个方面:
- Class? (类): 类是对象的模板或者蓝图, 定义了对象的属性和行为。 它是创建对象的抽象模型。
- Object? (对象): 对象是类的实例, 具体的、具有的、 有具体值的一个实体。对象具有一组状态 (属性)和行为 (方法)。
- Encapsulation(封装):? ?封装是指将数据和操作封装在一个对象中, 对象对外部提供公共借口, 隐藏内部细节, 只暴露必要的信息。
- Inheritance(继承):? ?继承是指一个类可以继承另一个的属性和方法。几次可以通过创建新的嘞来扩展现有类的功能, 实现代码的重用性和维护性。
- 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__
方法中初始化了name
和age
属性。然后,我们通过实例化该类创建了一个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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!