【python】面向对象程序设计

简介: 【python】面向对象程序设计

类的方法

1.方法类型
类的方法大致可分为如下四种类型:

公有方法:公有方法的名字不以下画线开头,可以在类的外面通过类名或对象名调用。
私有方法:私有方法以2个或更多下画线开头,可以在类的方法中通过self调用,不能在类的外面直接调用。
静态方法和类方法:静态方法和类方法成员可以通过类名和对象名调用,但不能直接访问属于对象的成员,只能访问属于类的成员,不属于任何对象。相比类方法,静态方法的开销更小。类方法一般以cls作为第一个参数表示该类自身,在调用类方法时不需要为该参数传递值。(静态方法使用装饰器@staticmethod声明 类方法使用装饰器@classmethod声明。)
抽象方法:抽象方法一般定义在抽象类中并要求派生类对抽象方法进行实现。
2.属性
一种特殊形式的方法,结合了成员和方法的各自优点,既可以通过属性访问类中的成员,也可以在访问前对用户为成员提供数据的合法性进行检测,还可以设置成员的访问机制。属性通常包括get()方法和set()方法。前者用于获取成员的值,后者用于设置成员的值。

3.特殊方法
类有大量的特殊方法,其中比较常见的是构造方法__init__()和析构方法__del__()

构造方法__init__()

当创建类的实例的时候,系统会自动调用构造方法,用来为类中的成员设置初始值或进行必要的初始化工作,在类实例化时被自动调用和执行。

析构方法__del__()

当删除一个实例对象来释放其所占用资源的时候,Python解释器默认会调用__del__( )方法。

1.构造方法和析构方法都可以由用户自己定义,如果用户没定义,系统会提供默认的构造方法和析构方法。

2.默认的析构方法__del__( )会进行必要的清理工作。

类的继承
子类或派生类:在继承关系中,已有的、设计好的类称为父类或基类,新设计的类称为子类或派生类。
派生类可以继承父类的公有成员,但是不能继承父类私有成员。如果需要在派生类中调用基类的方法,可以使用内置函数super()或者通过“基类名.方法名()”的方式来实现这一目的。
Python支持多继承,如果父类中有相同的方法名,而在子类中使用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。
1.创建派生类
创建派生类的一般格式:

class 派生类名字(父类1,父类2, ...):

    类体

2.举例
代码

#定义People类.
class People:
  #定义构造方法.
  def __init__(self,n,a):
    self.name = n
    self.age = a
  #定义公有方法.
  def speak(self):
    print("我是%s,今年%d岁." % (self.name,self.age))
#定义Student类,继承类People.
class Student(People):
  def __init__(self,n,a,g):
    People.__init__(self,n,a)                 #调用父类的构造方法.
    self.grade = g
  #重写父类的方法.
  def speak(self):
    print("我是%s,今年%d岁,读%d年级." % (self.name,self.age,self.grade))
if __name__ == '__main__':
  #创建Student类的对象.
  s = Student('孔融',10,4)
  s.speak()                                        #调用Student类中的speak()方法.
  super(Student,s).speak()                    #调用父类People的speak()方法.

注意事项

派生类可以只继承一个父类(单继承)
派生类也可以继承多个父类(多继承)
派生类调用父类方法,可用super.方法名()或父类名.方法名()
派生类可以继承父类的成员和方法,也可以定义自己的成员和方法。
如果父类方法不能满足要求,派生类也可以重写父类的方法。

6.类的多态
一般是指父类的一个方法在不同派生类对象中具有不同表现和行为。

举例
代码

#定义类Animal.
class Animal():
  #定义方法.
  def getInfo(self):
    return "I am an animal."
#定义类Lion,继承类Animal.
class Lion(Animal):
  #重写父类Animal的方法getInfo().
  def getInfo(self):
    return "I am a lion."
#定义类Tiger,继承类Animal.
class Tiger(Animal):
  #重写父类Animal的方法getInfo().
  def getInfo(self):
    return "I am a tiger."
#定义类Leopard,继承类Animal.
class Leopard(Animal):
  #重写父类Animal的方法getInfo().
  def getInfo(self):
    return "I am a leopard."
if __name__ == '__main__':
  #创建各个类的对象列表objectList.
  objectList = [item() for item in (Animal,Lion,Tiger,Leopard)]
  #不同对象调用同一方法getInfo().
  for object in objectList:
    print(object.getInfo())

抽象类和抽象方法
Python中一般使用抽象基类(Abstract Base Class,ABC)来实现抽象类。

1.特点
抽象类中通常包含抽象方法(没有实现功能),该类不能被实例化,只能被继承,且派生类必须实现抽象类中的抽象方法。

2.举例
代码

import abc
#定义抽象类.
class People(metaclass=abc.ABCMeta):
  #定义抽象方法.
  @abc.abstractmethod
  def working(self):
    pass
#定义抽象类People的派生类.
class Chinese(People):
  #实现抽象类的抽象方法working().
  def working(self):
    print("学习汉语…")
#创建Chinese类的对象.
c1 = Chinese()
c1.working()
相关文章
|
7天前
|
Python
你真的会面向对象吗!解密Python“魔术方法”
你真的会面向对象吗!解密Python“魔术方法”
15 0
|
2月前
|
Python
Python进阶第一篇(Python的面向对象)
Python进阶第一篇(Python的面向对象)
|
3月前
|
存储 算法 安全
Python编程实验六:面向对象应用
Python编程实验六:面向对象应用
72 1
|
3月前
|
人工智能 自然语言处理 开发者
Python基础教程——面向对象
Python基础教程——面向对象
|
17天前
|
安全 算法 Go
Python面向对象的三大特性
python面向对象编程(OOP)的三大特性是封装、继承和多态。这些特性共同构成了OOP的基础,使得软件设计更加灵活、可维护和可扩展。
14 3
|
22天前
|
数据采集 Java C语言
Python面向对象的高级动态可解释型脚本语言简介
Python是一种面向对象的高级动态可解释型脚本语言。
17 3
|
1月前
|
人工智能 数据挖掘 大数据
爆赞!GitHub首本标星120K的Python程序设计人工智能案例手册
为什么要学习Python? Python简单易学,且提供了丰富的第三方库,可以用较少的代码完成较多的工作,使开发者能够专注于如何解决问题而只花较少的时间去考虑如何编程。此外,Python还具有免费开源、跨平台、面向对象、胶水语言等优点,在系统编程、图形界面开发、科学计算、Web开发、数据分析、人工智能等方面有广泛应用。尤其是在数据分析和人工智能方面,Python已成为最受开发者欢迎的编程语言之一,不仅大量计算机专业人员选择使用Python进行快速开发,许多非计算机专业人员也纷纷选择Python语言来解决专业问题。 由于Python应用广泛,关于Python的参考书目前已经有很多,但将Pytho
|
1月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。 几十年来,一些趋势已经强有力地显现出来。计算机硬件已经迅速变得更快、更便宜、更小;互联网带宽已经迅速变得越来越大,同时也越来越便宜;优质的计算机软件已经变得越来越丰富,并且通过“开源”方式免费或几乎免费;很快,“物联网”将连接数以百亿计的各种可想象的设备。这将导致以快速增长的速度和数量生成大量数据。 在今天的计算技术中,最新的创新
|
1月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。
|
2月前
|
Python
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态