如何进行实现Python配置?

开发 后端
Python配置主要包括:DataSet,DataTable,DataColumn,DataRow,和DataRelation。这些对象的主要特点说明如下。

Python配置中的一个文本区域,其中某个名字空间可以直接访问,“直接访问” 这里指的是使用不加修饰的名字就直接找到名字空间中的对象,可以直接学习Python不必先从C下手。

例如,所有方法名用大写字母开头,所有数据属性名前用一个***的字符串开头(或者只是一个下划线),或方法名用动词而数据名用名词。数据属性可以被方法引用也可以被普通用户(“客户”)引用。换句话说,类不能用来构造抽象数据类型。实际上。

Python中没有任何办法可以强制进行数据隐藏——这些都是基于惯例。(另一方面,Python的实现是用C写的,它可以完全隐藏实现细节,必要时可以控制对象存取;用C写的Python扩展模块也有同样特性)。

客户要自己小心使用数据属性——客户可能会因为随意更改类对象的数据属性而破坏由类方法维护的类数据的一致性。注意客户只要注意避免名字冲突可以任意为实例对象增加新数据属性而不需影响到方法的有效性——这里,有效的命名惯例可以省去许多麻烦。

从方法内要访问本对象的数据属性(或其它方法)没有一个简写的办法。我认为这事实上增加了程序的可读性:在方法定义中不会混淆局部变量和实例变量。习惯上,方法的***自变量叫做self。这只不过是一个习惯用法:名字self在Python配置中没有任何特殊意义。但是。

因为用户都使用此惯例,所以违背此惯例可能使其它Python配置不容易读你的程序,可以想象某些类浏览程序会依赖于此惯例)。作为类属性的任何函数对象都为该类的实例定义一个方法。函数的定义不一定必须在类定义内部:只要在类内把一个函数对象赋给一个局部变量就可以了。例如:

  1. >>> class Complex:  
  2. ...     def __init__(self, realpart, imagpart):  
  3. ...         self.r = realpart 
  4. ...         self.i = imagpart 
  5. ...   
  6. >>> x = Complex(3.0,-4.5)  
  7. >>> x.r, x.i  
  8. (3.0, -4.5)  

现在f、g和h都是类C的属性且指向函数对象,所以它们都是C的实例的方法——其中h与g 完全等价。注意我们应该避免这种用法以免误导读者。方法可以用代表所属对象的self自变量来引用本类其它的方法,如:

  1. class VirtualAttributes:  
  2.     __vdict = None 
  3.     __vdict_name = locals().keys()[0]  
  4.        
  5.     def __init__(self):  
  6.         self.__dict__[self.__vdict_name] = {}  
  7.       
  8.     def __getattr__(self, name):  
  9.         return self.__vdict[name]  
  10.       
  11.     def __setattr__(self, name, value):  
  12.         self.__vdict[name] = value 

方法可以和普通函数一样地引用全局名字。方法的全局作用域是包含类定义的模块。(注意类本身并不被用作全局作用域!)虽然我们很少需要在方法中使用全局数据,全局作用域还是有许多合法的用途:

例如,导入全局作用域的Python配置和模块可以被方法使用。在同一模块中定义的函数和方法也可以被方法使用。包含此方法的类一般也在此全局作用域中定义,下一节我们会看到一个方法为什么需要引用自己的类!

一段需要以某种抽象数据类型作为输入的Python程序经常可以接受一个类作为输入,该类只是模仿了应输入的数据类型的方法。例如,如果你有一个函数是用来格式化一个文件对象中的数据,就可一个定义一个具有方法read()和readline()的类,该类可以不从文件输入而是从一个字符串缓冲区输入,把这个类作为自变量。

【编辑推荐】

  1. 有关Python系统文件进行介绍指导
  2. 如何正确的使用Python函数
  3. Python 构建工具进行详细介绍分析
  4. PythonAndroid浅析Python优势所在
  5. 如何使用Python模块解析配置文件?
责任编辑:chenqingxiang 来源: 博客园
相关推荐

2010-03-09 18:14:55

Python sock

2010-03-25 18:52:15

Nginx负载均衡

2010-02-03 13:55:51

Python 代码

2010-02-01 10:21:36

Python编码转换

2024-07-08 08:38:37

Python游戏开发

2010-09-27 10:54:53

JVM参数配置

2009-11-17 11:33:07

路由器配置

2010-02-01 18:20:17

Python 多重继承

2010-02-02 16:47:12

Python主线程

2010-03-11 17:38:20

Python中文

2010-03-15 15:11:50

Python列表

2010-02-01 14:48:43

2010-02-01 17:33:24

Python主线程

2010-06-10 17:26:51

UML建模过程

2010-02-01 16:22:36

Python字符串操作

2010-03-15 15:45:15

Python编程语言

2010-03-01 11:06:52

Python 调试器

2010-03-01 16:32:36

Python语言

2010-02-22 17:12:34

Python对象

2010-05-24 16:21:55

SVNServer安装
点赞
收藏

51CTO技术栈公众号