欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python面向对象编程(1)类和实例

程序员文章站 2022-07-23 16:13:29
Python面向对象编程(1)类和实例【转载】 面向过程和面向对象编程 面向过程(Procedure Oriented Programming,POP)和 面向对象编程(Object Oriented Programming,OOP) 是两种主要的程序设计思想。这里简单通俗地讲一下两者的区别: 编程 ......

Python面向对象编程(1)类和实例【转载】

面向过程和面向对象编程

面向过程(Procedure Oriented Programming,POP)和 面向对象编程(Object Oriented Programming,OOP) 是两种主要的程序设计思想。这里简单通俗地讲一下两者的区别:

编程的目的:为了去解决一个问题,或者处理一件事情,比如编写一个程序自动处理学生的信息,或者编写一个程序可以自动做北京烤鸭。

面向过程编程:按顺序编写一系列程序集合,然后执行,得到想要的结果。比如处理学生信息时:编写一条代码获取学生性别信息,然后再获取成绩信息,最后打印出该学生的姓名及成绩,对于每一个学生,把前面的代码执行一遍就可以打印出相应的信息。

对于做北京烤鸭也是类似,第一步洗鸭子,接着烤鸭子,最后切了吃掉,吃完了还不饱 ,那就再执行一次,再吃一只。按照我们写好的命令集合顺序执行,之后得到想要的结果,这就是面向过程的编程,其注重的是编写整个处理的流程。当然为了简化程序设计,面向过程运用函数把整个过程切分为多个子函数降低系统的复杂度,但它依然是面向过程编程。

面向对象编程:面向对象的编程把计算机程序视为一组对象的集合。比如,处理学生信息时,面向对象的编程并不是想着怎么编写程序去处理每个学生的信息,而是把所有这些学生当作一个类(Class),同时把处理类的程序也当作类的一部分,即所有的学生构成一个,类有自己的属性和方法,比如姓名和成绩都是属性,而打印成绩就是方法,而每一个具体的学生只不过是类的一个实例/对象。这样不仅可以使代码更简洁,也很容易修改属性和方法。

举个例子说明具体的区别:

面向过程

std1 = { 'name': 'Michael', 'score': 98 }
std2 = { 'name': 'Bob', 'score': 81 }

# 处理学生信息可以通过函数实现,比如打印学生的成绩:

def print_core(std):
    print('%s : %s'%(std['name'],std['score']))

print_core(std1)
print_core(std2)
Michael : 98
Bob : 81

面向对象

class Student(object):
    def __init__(self,name,score):
        self.name = name
        self.score = score
    def print_score(self):
        print('%s : %s'%(self.name,self.score))

amy = Student('amy',120)
jack = Student('jack',108)

amy.print_score()
jack.print_score()
amy : 120
jack : 108

类与实例

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,是一个统称,泛指所有的学生,而实例是根据类创建出来的一个具体的“对象”,比如张三、李四,每个对象都拥有相同的方法,但各自的数据/属性可能不同。

以Student类为例,在Python中,定义类是通过class关键字:

class Student(object):
    pass

class 后面紧接着是类名,即 Student,类名通常是大写开头的单词,通常采用大驼峰命名法,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念后面再讲,通常,如果没有合适的继承类,就使用 object 类,这是所有类最终都会继承的类。

定义好了 Student 类,就可以根据 Student 类创建出 Student 的实例,创建实例是通过类名+()实现的:

amy = Student()
print(amy)
print(Student)
<__main__.Student object at 0x000001E75252CBE0>
<class '__main__.Student'>

可以看到,变量 amy 指向的就是一个 Student 的实例,后面的 0x000001E75252CBE0 是内存地址,每个object的地址都不一样,而Student本身则是一个类。

原文链接:
原文作者:今日头条 - 小AI咨询