python+django+sae(3)

xiaoxiao2021-02-28  20

Python+Django+SAE系列教程3-----Python中的面向对象编程

原创 2014年04月15日 09:57:53 标签: 云平台 / python / sae / django / 1787 编辑 删除

第十一章的《简明 Python 教程》介绍了面向对象的一些思想,首先我们来看看在Python中是如何定义类的:

#!/usr/bin/python # Filename: method.py class Person: def sayHi(self): print 'Hello, how are you?' p = Person() p.sayHi()

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值,这相当于C#里的this。 在面向对象中我们知道一个类都有它的构造函数,C#中这个函数的名字都会和类名保持一致,而在Python中则都用__init__方法:

class Person: def __init__(self, name): self.name = name def sayHi(self): print 'Hello, my name is', self.name p = Person('Swaroop') p.sayHi()

接下来是类和对象的方法,如果有一些面向对象的思想看懂一下代码并不是什么难事儿:

#!/usr/bin/python # Filename: objvar.py class Person: '''Represents a person.''' population = 0 def __init__(self, name): '''Initializes the person's data.''' self.name = name print '(Initializing %s)' % self.name # When this person is created, he/she # adds to the population Person.population += 1 def __del__(self): '''I am dying.''' print '%s says bye.' % self.name Person.population -= 1 if Person.population == 0: print 'I am 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 'Hi, my name is %s.' % self.name def howMany(self): '''Prints the current population.''' if Person.population == 1: print 'I am the only person here.' else: print 'We have %d persons here.' % Person.population swaroop = Person('Swaroop') swaroop.sayHi() swaroop.howMany() kalam = Person('Abdul Kalam') kalam.sayHi() kalam.howMany() swaroop.sayHi() swaroop.howMany() 就如同__init__方法一样,还有一个特殊的方法__del__,它在对象消逝的时候被调用。对象消逝即对象不再被使用,它所占用的内存将返回给系统作它用。在这个方法里面,我们只是简单地把Person.population减1。 当对象不再被使用时,__del__方法运行,但是很难保证这个方法究竟在 什么时候 运行。如果你想要指明它的运行,你就得使用del语句,就如同我们在以前的例子中使用的那样。 一下是输出结果:

Hi, my name is Swaroop. I am the only person here. Hi, my name is Abdul Kalam. We have 2 persons here. Hi, my name is Swaroop. We have 2 persons here. Abdul Kalam says bye. There are still 1 people left. Swaroop says bye. I am the last one. 后面的行不一定什么时候会执行,所以我们在测试的时候一般看不到这四句话。 然后我们来看看Python的继承:

#!/usr/bin/python # Filename: inherit.py class SchoolMember: '''Represents any school member.''' def __init__(self, name, age): self.name = name self.age = age print '(Initialized SchoolMember: %s)' % self.name def tell(self): '''Tell my details.''' print 'Name:"%s" Age:"%s"' % (self.name, self.age), class Teacher(SchoolMember): '''Represents a teacher.''' def __init__(self, name, age, salary): SchoolMember.__init__(self, name, age) self.salary = salary print '(Initialized Teacher: %s)' % self.name def tell(self): SchoolMember.tell(self) print 'Salary: "%d"' % self.salary class Student(SchoolMember): '''Represents a student.''' def __init__(self, name, age, marks): SchoolMember.__init__(self, name, age) self.marks = marks print '(Initialized Student: %s)' % self.name def tell(self): SchoolMember.tell(self) print 'Marks: "%d"' % self.marks t = Teacher('Mrs. Shrividya', 40, 30000) s = Student('Swaroop', 22, 75) print # prints a blank line members = [t, s] for member in members: member.tell() # works for both Teachers and Students 我想聪明的你比照着一下输出结果,一定能理解Python中类继承的含义: $ python inherit.py (Initialized SchoolMember: Mrs. Shrividya) (Initialized Teacher: Mrs. Shrividya) (Initialized SchoolMember: Swaroop) (Initialized Student: Swaroop) Name:"Mrs. Shrividya" Age:"40" Salary: "30000" Name:"Swaroop" Age:"22" Marks: "75" 我们还观察到我们在方法调用之前加上类名称前缀,然后把self变量及其他参数传递给它。 注意,在我们使用SchoolMember类的tell方法的时候,我们把Teacher和Student的实例仅仅作为SchoolMember的实例。 另外,在这个例子中,我们调用了子类型的tell方法,而不是SchoolMember类的tell方法。可以这样来理解,Python总是首先查找对应类型的方法,在这个例子中就是如此。如果它不能在导出类中找到对应的方法,它才开始到基本类中逐个查找。基本类是在类定义的时候,在元组之中指明的。 阅读全文 本文已收录于以下专栏:
发表评论 HTML/XML objective-c Delphi Ruby PHP C# C++ JavaScript Visual Basic Python Java CSS SQL 其它

Python+Django+SAE系列教程14-----使表单更安全

Python+Django+SAE系列教程14-----使表单更安全 hemeng2014年05月08日 19:401710

[Django实战] 第9篇 - 表单、视图、模型、模板的交互

本章通过实现一个用户提交任务请求的页面,讲述表单、视图、模型、模板间的交互。首先,我们需要定义一个表单(forms.py)class CreatetaskForm(forms.Form):... u0104157922013年09月16日 17:376000 <script>(function() { var s = "_" + Math.random().toString(36).slice(2); document.write(' '); (window.slotbydup=window.slotbydup || []).push({ id: '4765209', container: s, size: '808,120', display: 'inlay-fix' }); })();</script>

Python+Django+SAE系列教程11-----request/pose/get/表单

Python+Django+SAE系列教程11-----request/pose/get/表单 hemeng2014年05月07日 19:092709

Python+Django+SAE系列教程12-----配置MySQL数据库

Python+Django+SAE系列教程12-----配置MySQL数据库 hemeng2014年05月07日 19:484799

Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)

Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF) hemeng2014年06月06日 11:573321 <script>(function() { var s = "_" + Math.random().toString(36).slice(2); document.write(' '); (window.slotbydup=window.slotbydup || []).push({ id: '4983339', container: s, size: '808,120', display: 'inlay-fix' }); })();</script>

Python+Django+SAE系列教程2-----Python种的函数、模块和数据结构

Python+Django+SAE系列教程2-----Python种的函数、模块和数据结构 hemeng2014年03月10日 23:501932

Python+Django+SAE系列教程1-----Python环境和基本语法

由于本系列内容是基于SAE的,目前SAE支持的Python版本是2.7.3,所以我们先安装这个版本的Python,下载地址:http://www.skycn.com/soft/appid/10554.... hechurui2014年03月28日 14:371992

Python+Django+SAE系列教程1-----Python环境和基本语法

Python+Django+SAE系列教程1-----Python环境和基本语法 hemeng2014年03月10日 23:402629

Python+Django+SAE系列教程6-----本地配置Django

Python+Django+SAE系列教程6-----本地配置Django hemeng2014年04月21日 16:532757

Python+Django+SAE系列教程10-----Django的模板

Python+Django+SAE系列教程10-----Django的模板 hemeng2014年04月21日 17:322272

hemeng

+关注 原创 54 粉丝 220 喜欢 0 码云  

他的最新文章

更多文章 2014年飞快地渡过了一半了 Python+Django+SAE系列教程17-----authauth (认证与授权)系统1 Python+Django+SAE系列教程16-----cookie&session

相关推荐

Python+Django+SAE系列教程14-----使表单更安全 [Django实战] 第9篇 - 表单、视图、模型、模板的交互 Python+Django+SAE系列教程11-----request/pose/get/表单 Python+Django+SAE系列教程12-----配置MySQL数据库 <script type="text/javascript" src="http://mpb1.iteye.com/bwocoltlyzdec.js"></script> <script>(function() { var s = "_" + Math.random().toString(36).slice(2); document.write(' '); (window.slotbydup=window.slotbydup || []).push({ id: '5384130', container: s, size: '300,300', display: 'inlay-fix' }); })();</script> <script src="http://dup.baidustatic.com/js/dm.js"></script> <script>(function() { var s = "_" + Math.random().toString(36).slice(2); document.write(' '); (window.slotbydup=window.slotbydup || []).push({ id: '4770930', container: s, size: '300,250', display: 'inlay-fix' }); })();</script>

他的热门文章

微信公共服务平台开发(.Net 的实现)2-------获得ACCESSTOKEN 13273 微信公共服务平台开发(.Net 的实现)1-------认证“成为开发者” 12222 云计算概念以及六大云平台对比---------开发者如何选型不同的云 10257 微信公共服务平台开发(.Net 的实现)5-------解决access_token过期的问题 8476 微信公共服务平台开发(.Net 的实现)3-------发送文本消息 8003 99 不良信息举报
您举报文章:Python+Django+SAE系列教程3-----Python中的面向对象编程举报原因: 色情 政治 抄袭 广告 招聘 骂人 其他 原文地址: 原因补充:

(最多只允许输入30个字)

转载请注明原文地址: https://www.6miu.com/read-1400086.html

最新回复(0)