我是靠谱客的博主 默默歌曲,最近开发中收集的这篇文章主要介绍python中级教程_Python 中级教程-面向对象,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

28e3200148b53141796c875863cf6b8d.png

一、什么是面向对象

面向对象程序设计(Object-oriented programming,OOP)不仅指一种程序设计方法,更是一种程序开发方式。

重要的面向对象编程语言包含Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift)、C#、Perl、Ruby 与 PHP等。

在编程解决问题时,面向对象程序设计开发方式关注的是“谁来做”——即谁来解决问题。

二、面向对象编程中的主要概念

1、类与对象

类(class):定义了一件事物的抽象特点。一般的,类定义了一个事物的属性和它可以做到的行为。编程时,我们所定义的类包含了数据的形式以及对数据的操作。举例来说,“狗”这个类包含了狗的一切基础特征(属性/形式),即所有“狗”都共有的特征或行为,如狗的繁殖、毛皮颜色和吠叫的能力。

通俗地说,类是具有相同属性和方法的对象的集合。“人”可归为一个类,各种动物各有它们所属的类,“大学”可归为一个类,等等。

方法:在类中定义的函数。

在Python中通过关键字class实现类的定义,语法如下:

classClassName:

block_class

在块block_class处写入类的成员变量(特征/属性/形式)及函数(操作)。如下是一个类dog的定义及其实例化:

classdog:

# dog类的属性

fur_color = "yellow"

# 方法

defBark(self):

return"汪汪汪汪"

# 实例化类——实例化类后才能使用其属性与方法

black_dog = dog()

# 访问类的属性和方法

print("dog类的fur_color属性:",black_dog.fur_color)

print("dog类的bark方法:", black_dog.Bark())

对象(object):是类的实例,即实例化后的类,如上代码中的black_dog就是一个实例化的对象。black_dog是一只具体的狗。dog类是抽象化的狗,指所有的狗。

在上述代码中,可以看到类的方法和普通的函数有一个特别的区别——类的方法必须有一个额外的第一个参数名称,习惯上用self。self代表的是类的实例。

类有一个名为 init()的特殊方法(构造方法),该方法在类实例化时会自动调用。其定义如下:

def__init__(self):

self.data = []

定义一个带构造方法的类:

classComplex:

def__init__(self, realpart, imagpart):

self.r = realpart # self 即指 Complex 的实例对象

self.i = imagpartx = Complex(2.2, 4.5)

print(x.r,x.i) #输出结果:2.2 4.5

类的私有属性与私有方法:

__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。

__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。

代码示例:

classJustCounter:

__secretCount = 0# 私有变量

publicCount = 0# 公开变量

defcount(self):

self.__secretCount += 1

self.publicCount += 1

print (self.__secretCount)

counter = JustCounter()

counter.count()

counter.count()

print (counter.publicCount)

print (counter.__secretCount) # 报错,实例不能访问私有变量

执行以上程序输出结果为:

122Traceback (most recent call last): File "test.py", line 16, in print (counter.__secretCount) # 报错,实例不能访问私有变量AttributeError: 'JustCounter' object has no attribute '__secretCount'

2、继承

继承(inheritance):指通过一个已有的类(称之为父类)定义另外一个类(称之为子类),子类共享父类开放的属性和方法。子类的对象除了是子类的一个实例,还是其父类的一个实例。

# 定义父类

classbaseClassName:

block_class

# 定义子类

classsubClassName(baseClassName):

block_class

示例:

classpeople:

name = '' age = 0

def__init__(self, name, age, weight):

self.name = name

self.age = age

self.__weight = weight

defspeak(self):

print("%s 说:我 %d 岁了" %(self.name,self.age))

classstudent(people):

grade = ''

def__init__(self, name, age, weight, grade):

people.__init__(self, name, age, weight)

self.grade = grade

# 覆写父类的speak方法

defspeak(self):

print("%s 说:我 %d 岁了,我在读 %d 年级。" %(self.name, self.age, self.grade))

Liming = student('Liming', 10, 55, 3)

Liming.speak() # 执行后输出结果:Liming 说:我 10 岁了,我在读 3 年级。

上述代码为单继承。同样的,一个子类也可以继承多个父类。同时,在上述代码中,在子类student中我们重新写了一个speak方法,这样会把父类people中写的speak方法覆盖。如果想重新使用父类的speak方法,可使用如下代码:

super(student,Liming).speak() #用子类对象调用父类已被覆盖的方法

3、其他概念

多态(polymorphism):指不同的方法作用于不同对象,可以有不同的解释,产生不同的执行结果。

示例如下:

classdog:

def__init__(self,Bark):

self.Bark = Bark

defcall(self):

print("狗叫:%s" %(self.Bark))

classchick:

def__init__(self,Crow):

self.Crow = Crow

defcall(self):

print("鸡叫:%s" %(self.Crow))

little_dog = dog('汪汪汪汪')

Lusi = chick('叽叽叽叽')

# 狗吠little_dog.call()

# 鸡叫Lusi.call()

都是叫,但是叫的表现方式却大不相同。

最后

以上就是默默歌曲为你收集整理的python中级教程_Python 中级教程-面向对象的全部内容,希望文章能够帮你解决python中级教程_Python 中级教程-面向对象所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部