python面向对象编程基础
来源:互联网 发布:js onclick事件不触发 编辑:程序博客网 时间:2024/05/16 06:08
演示了 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 inheritanceclass CanDoManyThing(CanFly, CanSwim): pass class PersonCanFlyAndSwim(Person, CanDoManyThing): pass# combinationclass 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 infostrif __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
0 0
- python面向对象编程基础
- Python面向对象编程基础
- Python面向对象编程基础
- python面向对象编程基础
- python 面向对象编程-基础
- Python面向对象编程基础
- python基础-----面向对象编程
- Python 面向对象编程(一)基础
- python基础学习笔记<面向对象编程>
- Python面向对象编程基础学习笔记
- python之面向对象编程基础
- Python基础之五面向对象编程
- python基础八_面向对象编程
- Python 之 基础面向对象编程
- Python基础学习--第十二篇(面向对象编程基础)
- Python基础进阶篇——面向对象编程基础
- Python编程基础之十二面向对象编程
- Python面向对象基础
- 使用计数器在mapper和reducer之间传递参数
- POJ 1679 The Unique MST (次小生成树)
- iOS常用第三方简介及下载地址
- UVA - 575 Skew Binary
- HTML_5_Web_Socket:Web通信革命揭幕
- python面向对象编程基础
- 安卓笔记:对话框的用法(Dialog)
- Effective 26~ 实现
- JS中encodeURI,escape,encodeURIComponent区别
- JavaFinal 与 C++ Const的区别 .
- 【软考】操作系统
- shell脚本判断某个linux程序是否在正常运行,如果不是就启动他
- Python property,属性
- iOS中tableView的下拉刷新与上拉加载(二)