演示了 Python 类与对象的编程基础, 包括属性、方法、继承、组合、动态创建类。 python 版本: 2.7.5

class SimpleClass(object):

    '''  a simple demo for python class  '''        

    commonResource = 1000

    def __init__(self, name, age):
print 'object has built: ', str(self)
self.name = name
self.age = age
SimpleClass.decrease() def info(self):
return 'id is: %d, my name is %s, and age is %d' % (SimpleClass.commonResource, self.name , self.age) @classmethod
def decrease(cls):
SimpleClass.commonResource-=1 @classmethod
def getCommonResource(cls):
return SimpleClass.commonResource class Person(SimpleClass): ''' Person definition ''' def __init__(self, name, age, sex, __secret):
super(Person, self).__init__(name, age)
self.sex = sex
self.__secret = __secret def info(self):
return super(Person, self).info() + \
', i am a ' + ('girl' if self.sex == 'female' else 'boy') + '.' + \
'\nmy secret: ' + self.__secret class CanFly(object): skill = 'I can fly !'
def fly(self, info=None):
return (info if info else ' ') + CanFly.skill class CanSwim(object): skill = 'I can swim !'
def swim(self, info=None):
return (info if info else ' ') + CanSwim.skill # static multiple inheritance
class CanDoManyThing(CanFly, CanSwim):
pass class PersonCanFlyAndSwim(Person, CanDoManyThing):
pass # combination
class PersonCanDoManyThing(object): def __init__(self, person, skills):
self.person = person
self.skills = skills def showSkills(self):
print self.person.info() + self.skills.fly() + self.skills.swim() def updateSkills(self, newSkills):
self.skills = newSkills def showDySkills(self):
infostr = self.person.info()
subclasses = self.skills.__class__.__bases__
for subclass in subclasses:
infostr += subclass().skillIn()
print infostr if __name__ == '__main__': cat = SimpleClass('mimi', 2)
print '<' + cat.name + ',' + str(cat.age) + '>'
# no private instance attribute in python class print SimpleClass.getCommonResource()
cat.decrease()
print SimpleClass.commonResource
# no private class attribute in python class print '\n----------- my lover --------------' mylover = PersonCanFlyAndSwim('yanni', 26, 'female', 'OO')
print mylover.fly(mylover.info()) print '\n----------- me --------------' me = Person('qinshu', 30, 'male', 'Oh')
mecando = PersonCanDoManyThing(me, CanDoManyThing())
mecando.showSkills() class SkillTpl(object):
def skillIn(self):
return 'I can ' + self.skill + ' !' def dyGenSkillClass(skillName):
SkillClass = type(skillName, (SkillTpl,), {'skill': skillName}) return SkillClass skillNameList = ['Reading', 'Writing', 'Riding']
skillClasses = []
for skillName in skillNameList:
SkillClass = dyGenSkillClass(skillName)
skillClasses.append(SkillClass) t = tuple(skillClasses)
DynamicSkills = type('MySkills', t, {})
myskillsNow = DynamicSkills()
mecando.updateSkills(myskillsNow)
mecando.showDySkills() print '\n----------- other ----------------' print "class name: %s\nclass doc: %s\nmodule: %s" % \
(SimpleClass.__name__ , SimpleClass.__doc__, SimpleClass.__module__)
print "class attr: ", dir(SimpleClass) print mylover.__dict__
print dir(mylover) # private instance attribute name in python class should start with __
try:
print me.__secret
except AttributeError, arg:
print arg
												

python面向对象编程基础的更多相关文章

  1. Python 面向对象编程基础

    Python 面向对象编程基础 虽然Pthon是解释性语言,但是Pthon可以进行面向对象开发,小到 脚本程序,大到3D游戏,Python都可以做到. 一类: 语法: class 类名: 类属性,方法 ...

  2. python学习第十四天 -面向对象编程基础

    python也是支持面向对象编程的.这一章节主要讲一些python面向对象编程的一些基础. 什么是面向对象的编程? 1.面向对象编程是一种程序设计范式 2.把程序看做不同对象的相互调用 3.对现实世界 ...

  3. Python基础 — 面向对象编程基础

    目录 1. 面向对象编程基础 2. 定义类和创建对象 3. init() 方法 4. 魔法方法 5. 访问可见性问题 5. 练习 1. 面向对象编程基础 把一组数据结构和处理它们的方法组成对象(obj ...

  4. Python学习-第三天-面向对象编程基础

    Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...

  5. day23面向对象编程基础

    面向对象编程基础1.面向过程的编程思想    核心过程二字,过程指的是解决问题的步骤,即先干什么\再干什么\后干什么    基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式    优点 ...

  6. Python 面向对象之五 基础拾遗

    Python 面向对象之五 基础拾遗 今天呢,就剩下的面向对象的相关知识进行学习,主要会学习以下几个方面的知识:1.上下文管理协议,2.为类加装饰器 3.元类 一.上下文管理协议 在学习文件操作的时候 ...

  7. 图解python | 面向对象编程

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  8. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  9. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

随机推荐

  1. scala函数进阶篇

    1.求值策略scala里有两种求值策略Call By Value -先对函数实参求值,在函数体中用这个求出的参数值.Call By Name -先不对函数实参求值,而是函数实参每次在函数体内被用到时都 ...

  2. ubuntu下code::blocks编译运行一个简单的gtk+2.0项目

    在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt ...

  3. poj_1456 贪心

    题目大意 一家超市,要卖出N种物品(每种物品各一个),每种物品都有一个卖出截止日期Di(在该日期之前卖出可以获得收益,否则就无法卖出),且每种物品被卖出都有一个收益值Pi. 卖出每个物品需要耗时1天, ...

  4. 【linux系列】安装虚拟机时候的3中网络模式

    一.桥接 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台实现网络中 ...

  5. 《转载》struts旅程《1》

    struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...

  6. Centos7 安装zabbix3.0 服务端 详细

    参考: https://www.cnblogs.com/37yan/p/6879218.html http://blog.csdn.net/hao134838/article/details/5712 ...

  7. python的类继承与派生

    一.继承和派生简介: 其实是一个一个事物站在不同角度去看,说白了就是基于一个或几个类定义一个新的类.比如定义了动物类接着派生出了人类,你也可以说人类继承了动物类.一个意思.此外python类似于C和C ...

  8. 索引原理 B tree

    数据库原理之-索引 背景介绍: 用数据库的时候经常有几个疑问: 1:为啥通过加索引就能提升数据的查询料率? 2:为啥加多了索引会导致增删改的效率变低? 3:为啥有的人能用好有的人用不好? 这些问题我们 ...

  9. 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集

    [BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...

  10. 树链剖分+离散+扫描(HDU5044)

    Tree Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Subm ...