Python的面向对象1
今天,我们来介绍Python的面向对象编程,其实面向对象并不陌生,在C++ ,Java ,PHP中也有大量使用!
好了,我们来步入正题!
那什么是面向对象编程呢?
1. 面向对象编程是一种程序设计的范式
2. 把程序看作是不同对象的相互调用
3. 它是对现实世界建立对象模型
下面我们来介绍一下面向对象的基本思想:
类和实例,类用于定义抽象类型,实例根据类的定义被创建出来。
如上图所示:人可以看作是一个模型,而张三,李四,王五,计算根据就是根据人这个模型而构造出来的一个个实体。
而这里我们可以说,人就是类的定义,而张三,李四,王五他们就是实例,如下图所示:
在Python中,类是由关键字class来定义,
面向对象最重要的一个思想是数据封装,我们可以在类中定义属性和方法。
class Person:
def __init__(self,name):
self.name = name
p1 = Person('zs')
p2 = Person('ls')
p3 = Person('ww')
上面就是面向对象的大体内容,接下来我们详细介绍一下:
1.定义类并创建实例:
在Python中,类通过class来定义,比如我们来定义一个Person类:
class Person(object):
pass...
......
在Python的编程习惯中,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。在这里假设是从object类继承下来!
有了类的定义,我们就可以创建出具体的实例,创建实例使用类名(),即 ls = Person().
2.创建实例属性:
虽然Person类可以创建出ls,ww,等等实例,但是这些实例看上去除了地址不同外,没有什么其他不同。但是如果让每个实例·拥有各自不同的属性,那我们就可以区分他 们了,那么如何给实例赋予属性的!当然了,大家都知道,Python是动态语言,对于每一个实例,都可以直接给他们的属性赋值:
ls = Person()
ls.name = 'li si'
ls.birth = '1995-6-5'
ls.age = 21
而且,实例的属性可以像普通变量一样进行操作,ls.age = ls.age + 2
类与list结合的情况:
class Person(object):
pass
p1 = Person()
p1.name = 'bart'
p2 = Person()
p2.name = 'adam'
p3 = Person()
p3.name = 'lisa'
list1 = [p1,p2,p3]
list2 = [p1,p2,p3]
print (list2[0].name)
print (list2[1].name)
print (list2[2].name)
好了,我们今天先说到这里,现在我要去上课了,回来之后接着给大家分享哈!
Python的面向对象1的更多相关文章
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- Python的面向对象3
接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外 ...
- Python的面向对象2
我们接着讲解Python的面向对象 1.初始化实例属性 在现实生活中,一种类型的实例会具有相同的某些属性,把这些实例划分为一个类型,则这些实例必然有相似的部分.但是,在创建实例之后,我们一个一个的为实 ...
- My way to Python - Day05 - 面向对象-思维导图
My way to Python - Day05 - 面向对象 思维导图
- Python进阶---面向对象的程序设计思想
Python的面向对象 一.面向过程与面向对象的对比 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
- Python之面向对象一
引子 小游戏:人狗大战 角色:人和狗 角色属性:姓名,血量,战斗力和性别(种类) 技能:打/咬 用函数实现人打狗和狗咬人的情形 def Dog(name,blood,aggr,kind): dog = ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- python基础——面向对象的程序设计
python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
随机推荐
- Spring.NET学习笔记
http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_Index.html
- Kivy A to Z -- 怎样从python代码中直接訪问Android的Service
在Kivy中,通过pyjnius扩展能够间接调用Java代码,而pyjnius利用的是Java的反射机制.可是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了b ...
- AndroidPN中的心跳检测
在AndroidPN客户端里存在着心跳检测功能.就是每隔一段时间客户端向服务器端发送一个消息,以检测连接是否正常,发送的消息内容为: <presence id="h09Ke-13&qu ...
- MP3的频率、比特率、码率与音质的关系
想知道MP3的频率.比特率.码率与音质的关系,是不是频率越高,码率越高,音质就越好.好像MP3大多数的频率都是44100HZ的.码率有128,192等等. 这里所说的频率是採样率,一般都是44100K ...
- drop table big_table 调试
(gdb) thread apply all bt Thread (Thread )): # # /storage/innobase/os/os0sync.cc: # ) at /usr/src/my ...
- google perftools分析程序性能
Google perftools 1.功能简介 它的主要功能就是通过采样的方式,给程序中cpu的使用情况进行“画像”,通过它所输出的结果,我们可以对程序中各个函数(得到函数之间的调用关系)耗时情况一目 ...
- jAVA HDU1001题
import java.util.Scanner;public class Main { public static void main(String args[]) { Scanner cin=ne ...
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)
Spring更新到3.0之后,其MVC框架加入了一个非常不错的东西——那就是REST.它的开放式特性,与Spring的无缝集成,以及Spring框架的优秀表现,使得现在很多公司将其作为新的系统开发框架 ...
- MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键
MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键 >>>>>>>>>>>>>> ...
- C# Quartz.Net 定时任务的简单使用
最近做了一个定时执行任务的软件. 执行任务时,会使用log4net记录日志,如果执行任务有异常,则发送邮件给指定的对象. 我做的是每天的9点和16点执行一次任务,以此记录: 首先,获得Quartz.N ...