1、class绑定属性与方法
#coding=utf-8 # 类 class Student(object): pass # 定义一个实例 student = Student() # 绑定属性 student.name = 'name' # 定义一个方法 def grade(): pass # 实例绑定方法,其他实例不能用该方法 from types import MethodType student.grade = MethodType(grade,student,Student) # 类绑定方法,所有实例都可以调用 Student.grade = MethodType(grade,None,Student) # 为了限制实例绑定属性 class User(object): # 指定name可以被绑定,父类有指定也可以绑定 __slots__ = ('name') user = User() user.name = 'name' # 可以绑定 user.sex = 'men' # 错误,不能够绑定
2、使用装饰器
#coding=utf-8 class Student(object): # 属性是私有的 # 类似getName,但调用时,直接.name @property def name(self): return self.__name # 类似serName,但调用时,直接.name = xxx @name.setter def name(self,name): self.__name = name #测试 if __name__ == '__main__': student = Student() student.name = 'name' print student.name # name
3、定制类
A:__str__
class Student(object): def init(self,name): self.name = name def __str__(self): print 'tihs is Student,name = %s',self.name student = Student('Array') print student # this is Student,name = Array print Student('Array') # this is Student,name = Array
B:__iter__,next() 用作类的迭代
class Number(object): def __init__(self,n=0): self.n = n def __iter__(self): return self def next(self): self.n = self.n + 1 if self.n >= 10: raise StopIteration return self.n # 测试 number = Number() for n in number: print n # 结果 1 2 3 4 5 6 7 8 9
C:__getitem__ 可以通过下标显示
class Number(object): def __init__(self,n=0): self.n = n def __getitem__(self,n): a,b = 1,1 # 下标获取 if isinstance(n,int): for m in range(n): a,b = b,a+b return a # 切片 if isinstance(n,slice): l = [] start = n.start stop = n.stop for m in range(stop): a,b = b,a+b if start <= m: l.append(a) return l # 测试 number = Number() # 下标 print number[2] # 2 # 切片 [1,2,3,5,8,13,21,34,55,89] print number[0:10]
D:__getattr__避免调用不存在属性产生的异常
class User(object): def __getattr__(self,attr): # 属性名是name 返回Array if 'name' == attr: return 'Array' # 其他属性,返回提示信息 return 'no attr: %s' % attr # 测试 user = User() print user.name # Array print user.sex # no attr:sex
4、动态创建类
A:type()
# 使用type可以查看变量的类型,也可以动态创建类 print (type(Student)) # <tpye 'type'> 类的类型就是type s = Student() print s # <type 'Student'> # 动态创建类 # 定义一个函数 #coding=utf-8 def m1(self): print 'm1' def m2(self): print 'm2' # 创建类,并绑定函数 # 参数1:类名 # 参数2:继承的类,当只有一个时,用tuple写法 # 参数3:类的方法名绑定函数名 Test = type('Test',(object,),dict(f1 = m1,f2 = m2)) # 测试 t = Test() t.f1() # m1 t.f2() # m2
相关推荐
**PHP面向对象高级编程**指的是在PHP 5及以上版本中,利用其强大的面向对象特性进行更复杂的编程。PHP 5引入了对象模型的重构,包括类、对象、继承、封装和多态等基本概念,同时也增加了如析构函数、抽象类、接口、...
Java 面向对象高级编程 Java 面向对象高级编程是 Java 编程语言中的一个重要概念,通过继承和方法覆盖创建子类,并能够创建异类集合并使用多态。本资源摘要信息将详细介绍 Java 面向对象高级编程的概念、继承、方法...
### JavaScript面向对象高级编程知识点概述 #### 面向对象编程(OOP) 1. **继承**:继承是OOP的核心概念之一,它允许我们创建一个类,该类继承了另一个类的属性和方法。继承机制是实现代码重用和创建类之间层次结构...
本书全面深入地介绍了Delphi 5的集成开发环境、基本编程技巧、项目管理、调试器、Object Pascal语言、动态链接库、与C++共享代码、面向对象编程、VCL的结构、Open Tools API、编写自己的元件和包等内容。Delphi 5是...
Labview面向对象编程是NI(National Instruments)的图形化编程环境Labview中的一种高级编程技巧,它借鉴了传统编程语言中的面向对象概念,如封装、继承和多态性,为Labview开发带来了更高的代码复用性和可维护性。...
Java面向对象精髓编程是Java开发的核心概念,它涵盖了类、对象、封装、继承、多态等关键要素。本文将深入探讨这些概念,并结合实际案例,帮助初学者从零开始掌握Java编程。 首先,我们从“Hello, World!”开始。这...
Delphi 5高级编程丛书之一IDE与面向对象编程
《Python 3面向对象编程》通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则。, 《Python 3面向对象编程》不是Python 的入门书籍,适合...
第5章面向对象高级编程.ppt
C++面向对象高级编程笔记
c++高级编程 C++面向对象多线程编程 c++标准程序库.pdf
尽管与高级编程语言在某些方面存在差异,但通过遵循Step7的编程标准,可以将程序结构和对象控制分开实现,从而形成清晰的程序架构体系。 2. 数据结构规划:在Step7中,应避免在类外部定义数据结构(UDT),而应在类...
用 C 语言实现面向对象编程,我曾经在嵌入式控制系统工作过,苦于嵌入式系统编程一直是 C 语言,而没法用 C++或其他高级 语言的面向对象方法编程。经过研究生的学习和探索,偶然间发现高焕堂老师写 OOPC(面向对象 C...
总之,LabVIEW的面向对象编程提供了更高级的编程模型,使得开发者能够构造复杂、模块化的系统。熟练掌握这些概念和技巧,将有助于提升LabVIEW项目的效率和质量。在实际工作中,结合良好的编程实践,如代码注释、模块...
《C++面向对象高效编程》是一本深入探讨C++编程技术的著作,由Kayshav Dattatri撰写,中文版的PDF格式使得国内读者能够更好地理解其内容。这本书主要聚焦于利用C++的面向对象特性进行高效编程,是C++程序员提升技能...
"Java面向对象高级编程实验报告" 本实验报告涵盖了Java面向对象高级编程的知识点,包括继承、多态、抽象类和接口等。实验目的旨在掌握Java面向对象编程技术,能够使用继承创立子类并实现方法覆盖,创立异类集合并...
《Python 3面向对象编程》通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则。, 《Python 3面向对象编程》不是Python 的入门书籍,适合...
《Python 3面向对象编程》通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则。 《Python 3面向对象编程》不是Python 的入门书籍,适合具有...