学习目标:

1-面向对象编程

2-类和对象

3-对象的属性和方法

4-类的特性

Python面向对象编程

一种编程程序的设计思想,把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

在Python中,所有数据类型都可以视为对象,也可以自定义对象。自定义的对象数据类型就是面向对象中的类(class)概念。

面向对象的设计思想是抽象出Class(类)和instance(实例),面向对象的抽象程度比函数高,一个类即包含数据又包含操作数据的方法。

类和对象

面向对象编程的两个非常重要的概念:类和对象

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组的景象定义,提出了另外一个新的概念——类

具有相似内部状态和运动规律的实体的集合。具有相同发生和行为事物的统称,类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。一个类可以找到多个对象。

对象

某一个具体事物的存在,在现实世界中可以是看得风措得着的,可以是直接使用的。

类与对象之间的关系:类就是创建对象的模板

定义类和创建对象

定义一个类和创建对象,格式如下:

#创建类——经典方法

class 类名: #class-关键字,类名的命名使用大驼峰命名法,即首字母大写

#如下:

class Hero:

#创建类——新方法

class Hero(object):#object是python里所有类的最顶级父类

#函数,在类中叫做方法

#创建方法

def info(self):#info是一个实例方法,第一个参数一般是self:表示实例对象本身。

print("这是面向对象hero")

#创建对象

对象名1 = 类名()

对象名2 = 类名()

对象名3 = 类名()

对象名(不必遵循大驼峰命名法) = 类名()

my_hero = Hero()

#对象的使用方法,对象名.(点语法)方法名

my_hero.info()

#输出结果:

这是面向对象hero

#再创建一个对象

my_hero2 = Hero()

print(my_hero)

print(my_hero2)

#输出结果:

<__main__.hero object at>#地址:在存储机制中

<__main__.hero object at>#地址

对象的属性和方法

获取和添加对象的属性

class teacher(object):

def show(self):

print("今天北京下雪了")

#创建对象

teacher_zhang = teacher()

#添加属性、特点、特征

teacher_zhang.name = "张三"

teacher_zhang.age = 20

teacher_zhang.sex = "男"

#获取属性,通过点语法

print(teacher_zhang.name)

输出结果:张三

#修改属性

teacher_zhang.age = 30

print(teacher_zhang.age)

输出结果:30

init 魔法函数:用来做属性的初始化

class teacher(object):

def __init__(self):

print("这是init方法")

def showName(self):

print("我的名字")

zhangsan = teacher()

zhangsan.showName()

#输出结果

这是init方法

我的名字

#__init__()方法,在创建一个对象时自动被调用,不需要手动调用

即:

class teacher(object):

def __init__(self):

print("这是init方法")

def showName(self):

print("我的名字")

zhangsan = teacher()

#输出结果:

这是init方法

#有参数的init方法

class teacher(object):

def __init__(self,name,age):

print("这是init方法")

self.name = name

self.age = age

print(name,age)

def showName(self):

print("我的名字")

zhangsan = teacher("张三",20)

#输出结果

张三 20

类的特性:封装、继承、多态

继承:多个类之间的所属关系

class Father(object):

def __init__(self,name):

self.name = name

print("我叫%s"%self.name)

def info(self):

print("我来自")

class Son(object):

def show(self):

print("展现我自己")

guoQilin = Son()

guoQilin.show()

#输出结果:展示我自己

单继承:Son类继承于Father

class Father(object):#父类:基类

def __init__(self,name):

self.name = name

self.family = "郭氏"

print("我叫%s"%self.name)

def info(self):

print("我来自%s家族"%self.family)

class Son(Father):#子类,通过继承,可以使用父类中的方法

def show(self):

print("展现我自己")

def info(self):

print("我是德云社新一代,个性就是要与众不同")

guoQilin = Son("郭麒麟") #”郭麒麟“是属性,guoQilin是一个对象

guoQilin.show()

guoQilin.info()

#输出结果

我叫郭麒麟

展现我自己

我是德云社新一代,个性就是要与众不同

子类在继承的时候,子类定义小括号中父类的名字;父类中的属性与方法都会传给子类;虽然子类没有定义init方法,但是父类有,子类应付使用父类的方法。

多继承:

#多继承

class Father(object):

def __init__(self,name):

self.name = name

self.family = "郭氏"

print("我叫%s"%self.name)

def info(self):

print("我来自%s家族"%self.family)

class ShiFu(object):

def __init__(self):

self.teacher = "于氏门生"

def speak(self):

print("我要说相声")

class Son(Father,ShiFu):

def show(self):

print("展现我自己")

def info(self):

print("我是德云社新一代,个性就是要与众不同")

guoQilin = Son("郭麒麟") #”郭麒麟“是属性,guoQilin是一个对象

guoQilin.show()

guoQilin.info()

guoQilin.speak()

#输出结果

我叫郭麒麟

展现我自己

我是德云社新一代,个性就是要与众不同

我要说相声

#魔法属性,可以查看继承顺序,子类,父类,师父类

print(Son.__mro__)

#输出结果

(, , , )

重写父类方法

子类继承父类,父类的方法满足不了子类的需要可以对父类的方法进行重写;重写的特点:继承关系,方法名相同

属性方法

类属性与实例属性

类属性就是类对象所拥有的属性,这被所有类对象的实例对象所共有,在内存中只存在一个副本。

#类属性

class People(object): #创建一个类

ame = "tom" #公有的类属性

__age = 12 #私有的类属性

p = People() #创建一个对象

#类的共有属性,实例(对象)与类都可以调用

print(p.name)

print(People.name)

#输出结果:

tom

tom

#私有的类属性,只能在类里面调用

print(p._age)

print(People._age)

#实例属性

class People(object):

ame = "tom"

#类属性,直接在类里面写的

def __init__(self):#self会将其下的属性指给对象

self.name = "xiaowang" #实例属性

self.age = 20

p = People()

p.age = 12

print(p.name)

print(p.age)

#输出结果

xiaowang

12

可以用实例属性改掉类属性

静态方法和类方法

类方法是类对象所拥有的方法,第一个参数必须是类对象,一般以cls作为第一个参数,能够通过实例对象和类对象去访问。类方法用@classmethod修饰。

静态方法用@staticmethod修饰,不能传入self,是独立的单纯的函数 。

#魔法属性,可以查看继承顺序,子类,父类,师父类

print(Son.__mro__)

#输出结果

(, , , )

python面向对象编程138讲_Python面向对象编程简单讲解相关推荐

  1. python函数的作用降低编程复杂度_Python函数式编程

    lambda 本文将介绍Python中函数式编程的特性.在对函数式编程的概念有了了解后,本文会介绍iterators和generators等语言特性,还有itertools和functools等相关的 ...

  2. python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

  3. python socket清空接收缓冲区_Python网络编程——修改套接字发送和接收的缓冲区大小...

    很多情况下,默认的套接字缓冲区大小可能不够用.此时,可以将默认的套接字缓冲区大小改成一个更合适的值. 1. 代码 # ! /usr/bin/env python # -*- coding: utf-8 ...

  4. python窗口编程哪个好_Python界面编程好用的模块推荐

    python做GUI界面开发其实并不适用,但作为一门优秀的脚本语言,没有GUI开发是万万不能的,下面我简单介绍4个非常不错的python GUI开发库/模块,感兴趣的朋友可以尝试一下: 01简单易用e ...

  5. python快速入门精讲_Python快速入门精讲

    基础入门篇 第0章从零开始3 0.1克服编程恐惧3 0.2如何写出好程序4 0.3为什么选择Python5 0.4Python的发展和应用6 0.5一些建议8 0.6多平台搭建Python开发环境10 ...

  6. python面向对象编程138讲_Python---面向对象编程-1

    我写博客是为了自己更好去理解Python编程,所以大佬略过勿喷,如果有错的地方欢迎指点. 什么是面向对象编程? 皮一下还是可以的....但皮几万就不行了! 现在开始进入主题,编程的风格有无数种,但总起 ...

  7. python的类和实例_Python 面向对象编程——类和实例

    1面向对象编程 面向对象编程: 面向对象编程--Object OrientedProgramming OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...

  8. python面相对象编程超市系统_python面向对象编程: 面向对象版学员管理系统

    转载自https://www.cnblogs.com/LynHome/archive/2020/04/06/12650318.html 详细解读请参考https://www.cnblogs.com/b ...

  9. python的面向对象编程项目案例_python面向对象编程实例ants vs bees

    [实例简介] 本实例为用python语言编写,以python的面向对象.列表.局部变量等部分知识为基础,内容类似于popcap的植物大战僵尸的游戏项目 本实例为UC berkeley课程CS61A的p ...

最新文章

  1. 2016已经过去,2017即将开始
  2. MEET 2021 | 人工智能产业、科研、投资届大咖齐聚,共探智能科技新机会
  3. svn版本控制git(github)
  4. jQuery里面的addClass讲解
  5. www.how2j.com_HOW-TO:快速开始使用Spring 4.0,以构建简单的REST-Like API(演练)
  6. 用JavaFX编写图块引擎
  7. 【HihoCoder - 1880】地铁环线 (前缀和,水题,模拟)
  8. ubuntu16 黑主题_给Ubuntu 8.10安装超炫酷黑色新主题
  9. 西安电子科技大学833真题_【2019更新版】西安电子科技大学计算机软件考研信息汇总...
  10. .gitkeep文件的作用
  11. base-64 字符串中的无效字符。_查找字符串中连续不重复最长字符串和长度的方法...
  12. Linux驱动概念扫盲篇
  13. php jpeg不支持,php jpeg不支持怎么办
  14. 谷歌出品!机器学习中英文术语对照表
  15. JVM中的本地内存追踪NMT(Native Memory Tracking)
  16. 美的苏宁“超级带货趴”来袭,养成带货达人,大牌净味冰箱带回家
  17. PS怎样把低像素图片变成高像素图片
  18. hcia完结 静态路由综合实验
  19. 后端开发面试自我介绍_一定是最适合你的后端面试指南
  20. 安装android+手机usb+驱动程序,一加手机驱动怎么安装 一加手机USB驱动手动安装详细教程图解...

热门文章

  1. jboss eap 7.0_创建委托登录模块(用于JBoss EAP 6.1)
  2. 实时通信:使用Spring Boot实现Websocket
  3. guava 集合转换_Guava的Collections2:过滤和转换Java集合
  4. jenkins api_接触Jenkins(Hudson)API,第2部分
  5. openshift_通过OpenShift超越云炒作
  6. Java TDD简介–第1部分
  7. Java的20年:重大事件的时间表
  8. java ee cdi_Java EE6 CDI,命名组件和限定符
  9. 具有CompletableFuture的异步超时
  10. SSL / TLS REST服务器–带有Spring和TomEE的客户端