????????面向过程是一种编程范式,它将程序分解为一系列的步骤或过程,每个步骤按照顺序执行,通过在步骤之间传递数据来完成任务。在面向过程的编程中,程序的重点是算法和步骤的顺序,而不是数据和对象。
面向过程的特点包括:
1. 程序由一系列的函数或过程组成,每一个函数都是一个可执行的步骤,它接受输入并产生输出。
2. 数据通常被定义为全局变量, 在函数之间进行传递。
3. 程序的控制流程通过函数调用和顺序执行来实现。
4. 面向过程的程序设计更关注解决问题的步骤和流程, 对于大规模复杂的问题, 可能需要编写大量的函数和代码。
????????简单直观、易于理解和调试。就是一个复杂的问题可以拆分成好几个步骤进行实现。
????????然而,随着程序规模的增大,面向过程的编程方式容易导致代码的维护困难和可读性差。。
????????面向对象编程(Object-oriented Programming,简称OOP)是一种编程范式,它将程序设计的过程中的数据和操作封装成对象,并通过对象之间的交互来完成任务。
????????面向对象编程具有许多优点,包括代码的可重用性、可维护性、灵活性和可扩展性。它能够更好地组织和管理复杂的程序,并使得代码更易于理解和修改。
????????编写程序的目的是为了解决特定的问题、自动化任务或实现特定的功能。程序可以在计算机上运行,并根据指定的逻辑和算法执行任务,从而实现预期的结果。
?????????在Python中,所有事物都可以表示为对象,包括数字、字符串、列表、元组等。但是,通过创建自己的类,您可以定义自己的对象类型,以更好地适应解决问题的需求。
????????在计算机编程中,类是一种用户定义的数据类型,它是面向对象编程(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他是男
类对象支持两种操作: 属性引用和实例化。
属性引用使用和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
????????通过实例化不同的对象,我们可以为每个对象设置不同的属性值。
????????属性引用和实例化是面向对象编程中非常重要的概念,它们允许我们通过对象来访问和操作属性,并创建多个相互独立的对象实例。
可以直接修改上述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"
。
类有一个名为__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