Python——面向对象编程(引言)
来源:互联网 发布:ava编程思想 编辑:程序博客网 时间:2024/04/30 00:15
一、类和实例
类和实例相互关联着:类是对象的定义,而实例是“真正的实物”。下面的实例展示了如何创建一个类:
- >>> class MyNewObjectType(bases):
- ... 'define MyNewObjectType class'
- ... class_suite
- ...
创建一个实例的过程称作实例化,过程如下:
- >>> myFirstObject = MyNewObjectType()
类即可以很简单,也可以很复杂。最简单的情况,类仅用作名称空间(namespace)。这意味着你把数据保存在变量中,对他们按名称空间进行分组,使得他们处于同样的关系空间中——所谓的关系是使用标准Python句点属性标识。
- >>> mathObj = MyData()
- >>> mathObj.x = 4
- >>> mathObj.y = 5
- >>> mathObj.x + mathObj.y
- 9
二、方法
在Python 中,方法定义在类定义中,但只能被实例所调用。也就是说,调用一个方法的最终途径必须是这样的:(1)定义类(和方法);(2)创建一个实例;(3)最后一步,用这个实例调用方法。
- >>> class MyDataWithMethod(object):
- ... def printFoo(self):
- ... print('You invoked printFoo()!')
- ...
- >>> myObj = MyDataWithMethod()
- >>> myObj.printFoo()
- You invoked printFoo()!
三、创建一个类(类定义)
- >>> class AddrBookEntry(object):
- ... 'address book entry class'
- ... def __init__(self, nm, ph):
- ... self.name = nm
- ... self.phone = ph
- ... print('Created instance for:', self.name)
- ... def updatePhone(self, newph):
- ... self.phone = newph
- ... print('Updated phone# for:', self.name)
- ...
- >>>
四、创建实例(实例化)
- >>> john = AddrBookEntry('John Doe', '408-555-1212')
- Created instance for: John Doe
- >>> jane = AddrBookEntry('Jane Doe', '650-555-1212')
- Created instance for: Jane Doe
五、访问实例属性
- >>> john
- <__main__.AddrBookEntry object at 0x01E0FB30>
- >>> john.name
- 'John Doe'
- >>> john.phone
- '408-555-1212'
- >>> jane.name
- 'Jane Doe'
- >>> jane.phone
- '650-555-1212'
- >>> john.updatePhone('415-555-1212')
- Updated phone# for: John Doe
- >>> john.phone
- '415-555-1212'
靠继承来进行子类化是创建和定制新类型的方式,新的类将保持已存在类所有的特性,而不会改变原有类的定义。新的子类可以定制只属于它的特定功能。除了与父类或基类的关系外,子类与通常的类没有什么区别,也行一般类一样进行实例化。
- >>> class EmplAddrBookEntry(AddrBookEntry):
- ... 'Employee Address Book Entry class'
- ... def __init__(self, nm, ph, id, em):
- ... AddrBookEntry.__init__(self, nm, ph)
- ... self.empid = id
- ... self.email = em
- ... def updateEmail(self, newem):
- ... self.email = newem
- ... print('Updated e-mail address for:', self.name)
- ...
如果需要,每个子类最好定义它自己的构造器,不然,基类的构造器会被调用。然而,如果子类重写基类的构造器,基类的构造器就不会被自动调用了——这样,基类的构造器就必须显示写出才会被执行。这里要显示传递 self 实例对象给基类构造器,因为我们不是在该实例中而是在一个子类实例中调用基类的__init__方法的。
八、使用子类
- >>> john = EmplAddrBookEntry('John Doe', '408-555-1212', 42, 'john@spam.doe')
- Created instance for: John Doe
- >>> john
- <__main__.EmplAddrBookEntry object at 0x01E0FC30>
- >>> john.name
- 'John Doe'
- >>> john.phone
- '408-555-1212'
- >>> john.email
- 'john@spam.doe'
- >>> john.updatePhone('415-555-1212')
- Updated phone# for: John Doe
- >>> john.phone
- '415-555-1212'
- >>> john.updateEmail('john@doe.spam')
- Updated e-mail address for: John Doe
- >>> john.email
- 'john@doe.spam'
0 0
- Python——面向对象编程(引言)
- Python——面向对象编程(引言)
- python学习——面向对象编程
- python学习——面向对象编程
- Python学习笔记(六)——面向对象编程
- python学习(12)——面向对象编程
- python学习(13)——面向对象高级编程
- python学习(7)——面向对象编程
- 面向对象编程其实很简单——Python 面向对象(初级篇)
- 面向对象编程其实很简单——Python 面向对象(初级篇)
- 面向对象编程其实很简单——Python 面向对象(初级篇)
- python核心编程八——面向对象编程
- python面向对象编程
- python 面向对象编程
- python面向对象编程
- python面向对象编程
- Python 面向对象编程
- Python面向对象编程
- Nginx 关于 Rewrite 执行顺序详解
- 在mac系统安装Apache Tomcat的详细步骤
- 一个老兵的linux学习和面试经验分享 【转载】
- Python——条件、循环和其他语句
- 配置安装Apache主服务发生错误:"(OS 5)拒绝访问。 : AH00369: Failed to open the Windows service manager, perh······ "
- Python——面向对象编程(引言)
- 有一定通用性的单调队列模板
- Go语言学习:Channel是什么?
- MyEclipse2015配置Tomcat方法
- android 测试以及工具的设置
- Python——类属性/实例属性
- C3P0整体类结构简单分析
- Oracle pl/sql编程 7---复合变量之记录类型
- Python——类、实例和其他对象的内建函数