继续复习Python,今日复习 —— 面向对象程序设计,中间会有自己的心得体会,要是有什么错误或者补充可直接评论或者私信哟。

面向对象程序设计

面向对象程序设计的思想主要针对大型软件设计提出,能够很好的支持代码复用和设计复用,并使得代码有很多好的可读性和扩展性,这点与Java是相同的,起到了封装的作用。对于相同类型的对象进行分类、抽象后,得出共同特征而形成了类,面向对象程序设计的关键就是如何合理的定义和组织这些类以及类之间的关系。

Python的面向对象程序设计中也有分装,继承,多态,重写等。但不同的是,Python中对象的概念很广泛,Python中一切内容都可以称为对象,而不一定是某个对象的实例。

刚开始我学这方面知识的时候,说实话是抵触的,因为我感觉不需要用到这方面的东西,但在学习多线程和自己尝试着开发一点小项目的时候,发现这是必不可少的东西,自己也曾再学习过这个知识,但一致是我自己的软肋,这次再次好好复习!

1. 类的定义与使用

1.1 类定义语法

class 关键字来定义类;类名的首字母一把要大写。

# 定义类,新式类必须至少有一个基类

class Car:

def infor(self):

print('This is a car')

定义了类之后,可以用来实例化对象,并通过“对象名.成员”的方式来访问其中的数据成员或成员方法:

# 这点和Java是类似的,但实例化的时候少了关键字 New

car = Car()

car.infor()

This is a car

可以使用内置方法 isinstance() 方法来测试一个对象是否为某个对象的实例:

isinstance(car,Car)

True

关键字 pass ,类似于空语句,当暂时没有确定如何实现功能,或者为以后的软件升级预留空间时,可以使用次关键字来“占位”:

class A:

pass

1.2 self 参数

类的所有实例方法都必须至少有一个名为 self 的参数,并且必须时方法的第一个形参,self 参数代表对象本身。在类的实例方法中访问实例属性时需要以 self 为前缀,但在外部通过对象名调用对象方法时并不需要传递这个参数,如果在外部通过类名调用对象方法则需显式为 self 参数传值。

class A:

def __init__(self,v):

self.v = v

def show(self):

print(self.v)

a = A(3)

a.show()

3

1.3 类成员与实例成员

(1)实例属性。一般指在构造函数 init() 中定义的,定义和使用时必须以 self 为前缀。

(2)类属性。是在类中所有方法之外定义的数据成员。

在主程序(或类的外部),实例属性属于实例(对象),只能通过对象名访问;而类属性属于类,可以通过类名或对象名访问。

Python比较特殊的是,可以动态的为类和对象增加成员,这一点是和其它的程序设计语言是不同的。Python动态型特点的一种体现。

class Car:

price = 1000

def __init__(self,c):

self.color = c

car_1 = Car('red')

car_2 = Car('blue')

print(car_1.color,Car.price)

Car.price = 2000

# 增加类属性

Car.name = 'QQ'

# 修改实例属性

car_1.color = 'pick'

# 创建方法

def setSpeed(self,s):

self.speed = s

1.4 私有成员与公有成员

Python并没有严格对私有成员提供严格的访问保护机制。

私有属性:属性名前以两个下划线开头‘__’(中间无空格)开头则表示私有属性。其在类的外部不能直接访问,需要通过调用对象的公有成员方法来访问。

注意:

class A:

def __init__(self,value_1=0,value_2=0):

self._value_1 = value_1

self.__value_2 = value_2

def setValue(self,value_1,value_2):

self._value_1 = value_1

self.__value_2 = value_2

2. 方法

(1)公有方法。属于对象。通过方法名直接调用。

(2)私有方法。属于对象。其名字以两个下划线‘__’开始。只能在属性方法中通过 self 调用或在外部通过Python支持的特殊方法调用。

(3)静态方法。

(4)类方法。

class Root:

_tatal = 0

def __init__(self,v):

self._value = v

self._tatal += 1

# 类方法

@classmethod

def A():

pass

# 静态方法

@staticmethod

def B():

pass

3. 特殊方法与运算符重载

Python类中有大量的特殊方法,其中比较常见的是构造函数和析构函数。

(1)构造函数。init() ,一般用来为数据成员设置处置或进行其他必要的初始化工作,在创建对象时被自动调用和执行,可以通过构造函数定义默认值参数来实现类似于其它语言中构造函数重载的目的。

(2)析构函数。del(),一般用来释放对象占用的资源,在Python删除对象和回收空间时被自动调用和执行。

4. 继承机制

继承是为了代码复用和设计复杂而设计的,时面向对象设计的重要特性之一,这与Java中继承的思想一致。在继承关系中,已有的、设计好的类称之为父类,新设计的类称为字类或派生类。派生类可以继承父类的公有成员,但不能继承私有成员。如果需要在派生类中调用基类的方法,可以使用内置函数的 super() 或者通过“基类名.方法名()”的方法来实现。

首先设计Person类,再以Person类为基类派生Teacher类,分别创建person类和Teacher类的对象,并在派生类中调用基类的方法:

# 在创建类的时候默认继承 类的基类 object

class Person(object):

def __init__(self,name='',age=20,sex='main'):

self.setName(name)

self.setAge(age)

self.setSex(sex)

def setName(self,name):

if not isinstance(name,str):

print('name must be string')

return

self._name = name

def setAge(self,age):

if not isinstance(age,int):

print('age must be int')

return

self._age = age

def setSex(self,sex):

if sex != 'man' and sex != 'woman':

print('sex muest be "man" or "woman"')

return

self._sex = sex

# 继承 Person 类

class Teacher(Person):

def __init__(self,name='',age=30,sex='man',department='Computer'):

# 使用父类的方法

super(Teacher,self).__init__(name,age,sex)

sef.setDepartment(department)

哎,感觉还是需要大量的练习取熟悉哇!加油!

原文链接:https://blog.csdn.net/zc666ying/article/details/105927717

python类与对象作业_荐富贵和你一起复习Python(第10篇)— 面向对象程序设计相关推荐

  1. python类和对象课件_简单解释Python的类和对象

    前言: 对象是模拟真实世界,把数据和程序进行封装 . 对象 = 属性+ 方法 我们需要用类来创造一个对象,就像我们要用图纸来造房子一样.在Python中函数名是以小写字母开头 ,类名是以大写字母开头. ...

  2. python 鱼c工作室作业_#鱼C工作室Python作业#图解python百度云

    最好的python视频教程谁有 我这里有python全套高清教学视频,非常适合新手小白,真实分享,望采纳点赞. python 网盘 python视频教程从入门到精通 有提取码:提取码:8ste 求一个 ...

  3. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  4. python类包含对象的个数_python类与对象各个算数运算魔法方法总结

    1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...

  5. Python类与对象实验

    一.任务描述   本实验任务主要对Python类与对象进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python类与对象的关系,并对Python类与对象的基本操作进行整理并填写工作任务报告. ...

  6. 【Python基础入门系列】第10天:Python 类与对象

    首先,我已经假定你是个萌新或已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿,我觉得有必要找一篇生动形象的示例来讲解. 由于你可能没有编程经验, 所以无法从学过 ...

  7. python类和对象_Python类和对象

    python类和对象 Python is an object-oriented programming language. Python Classes and Objects are the cor ...

  8. python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...

    python中类与对象之继承,python类和对象理解,面对对象的三大特性之 面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在 ...

  9. python类与对象示意图_2020Python作业——类与对象,

    2020Python作业--类与对象, @2020.4.7 选课系统项目中涉及到诸多数据与功能,要求引入面向对象的思想对其进行高度整合#1.学校数据与功能整合#2.课程数据与功能进行整合#3.学生数据 ...

最新文章

  1. 《Python编程从入门到实践》学习笔记3:列表
  2. Cannot determine Numba type of <class ‘numba.core.dispatcher.LiftedLoop‘
  3. 科大星云诗社动态20210205
  4. Android library projects cannot be launched问题的解决
  5. 【Git】git使用:新建仓库、管理分支、冲突解决
  6. 31.水平居中总结-不定宽块状元素方法(三)
  7. 关于ios手机上传图片旋转问题的解决
  8. 服务器linux启动,Linux 服务器环境启动
  9. JDK1.8 中 ConcurrentHashMap源码分析(一)容器初始化
  10. pg_basebackup基础备份多表空间
  11. 树莓派输出pwm波c语言,树莓派Ubuntu18.04使用pigpio库产生PWM波实现舵机控制
  12. 官方实锤!微软宣布以 75 亿美元收购 GitHub
  13. 搭建测试环境如何配置软件,软件测试环境的搭建(Windows版)
  14. Taskctl安装以及简单使用
  15. python读取.nii.gz文件并使用nibabel展示医学图片
  16. Java反射专题笔记
  17. 深恶痛绝!关闭win10自动更新的办法
  18. 管培生走下神坛,“高管捷径”破灭
  19. 民俗多种内涵-农业大健康·万祥军:牛首山谋定世外桃源
  20. Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解

热门文章

  1. 分众传媒的连夜雨和消化不良症
  2. 读取*.properties文件的配置信息
  3. NOIP2018游记(更新完毕)
  4. Murano Weekly Meeting 2016.07.05
  5. 通过css样式,控制文字显示...
  6. 【整理】更改MSSQL默认字符集
  7. KR《C语言》书中的一个Bug
  8. 整理收藏-mysqldump导出数据库
  9. linux之我常用的20条命令(之二)
  10. 什么是GC Roots