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学习系列(八)( 面向对象基础)的更多相关文章
- Python学习系列之面向对象
概述 一.Python编程方式 面向过程编程:根据业务逻辑从上到下磊代码 面向函数编程:将某功能代码封装到函数中,将来直接调用即可,无需重新写 面向对象编程:对函数进行分类.封装 二.面向过程编程 w ...
- Python学习系列(二)(基础知识)
Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比, ...
- Python学习系列(九)(IO与异常处理)
Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- Python学习系列(四)(列表及其函数)
Python学习系列(四)(列表及其函数) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) Python学习系列(三)(字符串) 一.基本概念 1,列表是什么? ...
- Python学习系列(三)(字符串)
Python学习系列(三)(字符串) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) 一个月没有更新博客了,最近工作上有点小忙,实在是没有坚持住,丢久又有感觉写的必要了 ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Python学习一:序列基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...
随机推荐
- C++(三十) — this 指针
1.如何区分多个对象调用同一个类函数? 类外部访问类成员,必须用对象来调用.一个类的所有对象在调用的成员函数,都执行同一段代码,那成员函数如何区分属于哪个对象呢? 在对象调用成员函数时,除接收实参外, ...
- SHOW INNODB STATUS 探秘
[InnoDB系列] -- SHOW INNODB STATUS 探秘 SHOW INNODB STATUS 探秘 转载:http://imysql.com/2008_05_22_walk_throu ...
- CSS布局 — 圣杯布局与双飞翼布局
圣杯布局 实现原理 html代码中,middle部分首先要放在container的最前部分,然后是left,right 将三者都设置 float:left, position:relative (因为 ...
- web版源码管理软件SCM-Manager安装配置
背景 一直使用 “VisualSvn Server” 作为源码管理工具,使用一段时间之后,使用场景遇到以下问题 添加用户必需登录到服务器. 一台服务器,只能安装一个 “VisualSvn Server ...
- 【转】busybox分析——arp设置ARP缓存表中的mac地址
[转]busybox分析——arp设置ARP缓存表中的mac地址 转自:http://blog.chinaunix.net/uid-26009923-id-5098083.html 1. 将arp缓存 ...
- PHP for循环的写法和示例
For循环是最近的循环语句之一,无论哪种语言,都有这个循环语句,也是我们工作中常用的循环方法. 语法规则: for (expr1; expr2; expr3){ 要执行的代码 } expr1:表示循环 ...
- zset类型以及其操作
sorted set类型 sorted sets类型以及其操作zset是set的一格升级版本,它在set的基础上增加了一格顺序属性,这一属性在添加元素的同时可以指定,每次指定后,zset会自动重新按照 ...
- MoreEffectiveC++Item35 条款25 将constructor和non-member functions虚化
1.virtual constructor 在语法上是不可将构造函数声明成虚函数,虚函数用于实现"因类型而异的行为",也就是根据指针或引用所绑定对象的动态类型而调用不同实体.现在所 ...
- c# 验证码图片生成类
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D ...
- wxWidgets的配置
参考 :http://www.codeproject.com/Articles/11515/Introduction-to-wxWidgets 我是将D:\wxWidgets-3.0.1,中 编译过 ...