Python学习系列(八)( 面向对象基础)
一,面向对象
1,域:属于一个对象或类的变量。有两种类型,即实例变量—属于每个实例/类的对象;类变量—属于类本身。
2,类的方法:对象也可以使用属于类的函数来具有功能,这样的函数称之为类的方法。域和方法合称为类的属性。类使用class关键字创建,类的属性被列在一个缩进块中。
3,self:类的方法与普通的函数只有一个特别的区别----他们必须有一个额外的第一个参数名称,但是在调用的时候不能为其赋值,Python会提供。这个特别的变量指对象本身,按照惯例命名为self。self等价于C++中的self指针和Java,C#中的this。
创建一个类:
 class Person:
pass p=Person()
print p
>>> ============= RESTART ================================
>>>
<__main__.Person instance at 0x02A99B98>
4,使用对象的方法:
1)
 class Person:
def sayHi(self):
print 'Hello,how are you?' p=Person()
p.sayHi()
2)使用__init__方法
 class Person:
def __init__(self,name):
self.name=name def sayHi(self):
print 'Hello,my name is',self.name p=Person('John')
p.sayHi()

3)使用类与对象的变量

 class Person:
'''Represents a person.'''
population=0
def __init__(self,name):
'''Initializes the person's data.'''
self.name=name
print '(Initializing %s)'%self.name
Person.population +=1 def __del__(self):
'''I'm dying.'''
print '%s says bye.'%self.name
Person.population -=1
if Person.population==0:
print '''I'm the last one.'''
else:
print 'There are still %d people left.'%Person.population def sayHi(self):
'''Greeting by the person. Really,that's all it does.'''
print 'Hello,my name is%s.'%self.name def howMany(self):
'''Prints the current population.'''
if Person.population==1:
print '''I'm the only one here.'''
else:
print 'We have %d person here.'%Person.population p=Person('John')
p.sayHi()
p.howMany() p1=Person('John1')
p1.sayHi()
p1.howMany() p.sayHi()
p.howMany()

属性参考:使用self变量来参考同一个对象的变量和方法。

二、继承

1,继承是用来描述类之间的类型和子类型关系。
2,多态现象:一个子类型在任何需要父类型的场合可以替换父类型,即对象可以被视作父类的实例。
3,基本类(超类)和子类(导出类)
4,示例:
 class SChoolMember: #教师与学生的公有属性,基类
'''Represents any SChoolMember.'''
def __init__(self,name,age):
'''Initializes the person's data.'''
self.name=name
self.age=age
print '(Initializing SChoolMember %s)'%self.name def tell(self):
'''Tell my details.'''
print '''Name:%s\nAge:%s'''%(self.name,self.age) class Teacher(SChoolMember): #教师子类
'''Represents any Teacher.'''
def __init__(self,name,age,salary):
'''Initializes the person's data.'''
SChoolMember.__init__(self,name,age) #继承
self.salary=salary
print '(Initializing Teacher %s)'%self.name def tell(self):
'''Tell my details.'''
SChoolMember.tell(self) #继承
print '''Salary:%d'''%self.salary class Student(SChoolMember): #学生子类
'''Represents any Student.'''
def __init__(self,name,age,marks):
'''Initializes the person's data.'''
SChoolMember.__init__(self,name,age) #继承
self.marks=marks
print '(Initializing Student %s)'%self.name def tell(self):
'''Tell my details.'''
SChoolMember.tell(self) #继承
print '''Marks:%d'''%self.marks t=Teacher('Mrs.Jhon',40,4000)
s=Student('zhangbc',23,90)
members=[t,s]
for member in members:
member.tell()
print ''

三、小结

      时隔快一年了,动笔生疏了,想想还是学习比较踏实吧。本篇幅较短,重在理解,后续逐渐完善。


Python学习系列(八)( 面向对象基础)的更多相关文章

  1. Python学习系列之面向对象

    概述 一.Python编程方式 面向过程编程:根据业务逻辑从上到下磊代码 面向函数编程:将某功能代码封装到函数中,将来直接调用即可,无需重新写 面向对象编程:对函数进行分类.封装 二.面向过程编程 w ...

  2. Python学习系列(二)(基础知识)

    Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比, ...

  3. Python学习系列(九)(IO与异常处理)

    Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...

  4. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  5. Python学习系列(四)(列表及其函数)

    Python学习系列(四)(列表及其函数) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) Python学习系列(三)(字符串) 一.基本概念 1,列表是什么?     ...

  6. Python学习系列(三)(字符串)

    Python学习系列(三)(字符串) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) 一个月没有更新博客了,最近工作上有点小忙,实在是没有坚持住,丢久又有感觉写的必要了 ...

  7. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  8. Django学习系列之Form基础

     Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  9. Python学习一:序列基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...

随机推荐

  1. 为Spring Cloud Config Server配置远程git仓库

    简介 虽然在开发过程,在本地创建git仓库操作起来非常方便,但是在实际项目应用中,多个项目组需要通过一个中心服务器来共享配置,所以Spring Cloud配置中心支持远程git仓库,以使分散的项目组更 ...

  2. C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 06)

    ----------------------------------------- go 并发 // 注解:go 语言天生为程序并发所设计,可以说go的强项就是在cpu并发上的处理. // go 语言 ...

  3. laravel怎么获取到public路径

    app_path() app_path函数返回app目录的绝对路径: $path = app_path(); 你还可以使用app_path函数为相对于app目录的给定文件生成绝对路径: $path = ...

  4. Web框架之Django-20-基于mysql数据库的连接

    Web框架之Django-20-基于mysql数据库的连接   想要连接mysql首先需要安装pymysql这个驱动     然后在app的init文件中引入驱动 import pymysql pym ...

  5. docker 快速搭建 WordPress

    安装Docker 环境:阿里云服务器 镜像:CentOs 7.4 64 https://docs.docker.com/install/linux/docker-ce/centos/ 安装WordPr ...

  6. python中sort()与sorted()的区别

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3 ...

  7. 6个变态的C语言程序

    转载自 陈浩 coolshell.cn 下面的六个程序片段主要完成这些事情: 输出Hello, World 混乱C语言的源代码 下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译 ...

  8. JavaScript的数组

    属性: length(长度) 方法: join(字符);//把数组用指定字符拼接成一个字符串. 例:str.join("-"); //a-b-c-d sort();//排序(自然排 ...

  9. SoftmaxWithLoss函数和师兄给的loss有哪些区别呢

    师兄的: NG教程中提到的:

  10. ios一些噁心记录

    有时在tableview的头部会凭空多出一块空白区域,这是由于ios会"贴心"的多分配一些用于滑动的多余inset. 消除这一空白的方法是,在tableview所在的control ...