Python论坛  - 讨论区

标题:[python-chinese] 老菜鸟 邹胖小 学习PYTHON 入门日志 (八)

2005年07月01日 星期五 17:57

Chao Zou chao.zou at gmail.com
Fri Jul 1 17:57:44 HKT 2005

致谢:
在上两篇子中出现了一些错误,我谢谢很多兄弟们的指正
我会好好写例子改正过来的。这几天工作忙,耽误了几天。
又要出个很长时间的差了,但是我会坚持写完笔记。绝对不会
虎头蛇尾的,那天看到一个兄弟说好多人写笔记都半途而废。
我会努力的,不会让兄弟失望的,另外作为学习的检验我会
做完笔记后,写一个程序,现在暂时定为Python的贪吃蛇的游戏。

继续:
30:name space 名字空间
        很多理论上的东西,比较枯燥。
        我现在不是很明白,只能写下了我现在的理解。以后补充
        name space 要遵守 LGB 原则
        name的查找顺序就是 先local name space 然后是 global name space
        最后是 build in name space。
        每个object 可以有很多个名字,删除一个名字的时候并不删除object
        但是当最后一个名字被删除的时候,object也会被删除。
        global 可以把一个名字扩展到global name space中去。
        其它名字空间的概念和C++的差不太多了。
        
以下将是类       
31:面向对象
        面向对象是一种思想,是更接近自然思考的思想,代码重用,
        封装,继承,多态。面向对象 的核心是,抽象、分离接口和实现。
        面向对象在不同语言实现的不同,多多体会就ok了。

32:object
        又一次强调python和c++的不同,c++中是指class的实例,而python
        把很多东西都当作对象看待,如list,tuple,dictionary,class,function,
        class instance,module,package ,用户自己定义的东西,int等都当作了
        对象。几个重要概念:
        (a) name space :是个动态数据结构(dictiunary),是一个名字唯一映射
             一个object的关系,但一个object不一定只有一个名字。不存在没有名字
             的object因为没了名字的object就会被删除了。
        (b) name:是个字符串,映射一个object,也是name space的成员。
        (c) object:是一个独立的name space,object.__dict__是返回一个dictionary
             代表的名字空间,可以用object.__dict__keys()得到所有那么的list,
             object.__dict__[name]表示name所指的object。
        (d) alias:别名,两个name指同一个object,就互为alias
        (e) attibute:就当作是一个Objec中的成员变量了。设置的方法有:
              obj.new_attribute =other 或 setattr(obj,"new_attribute",other)
              删除一个为
              del obj.new_attribute 或 delattr(obj,"new_attribute")
              查询
              hasattr(obj,"new_attribute")
              列出所有的attribute
              dir(obj)
         (f) 一个object的例子
         >>> class simplestclass:                    
                pass                                 #什么都没做    
        
         >>> class simple:                           
                def __init__(self):                   #相当于c的main的入口
                        print "OK ,It's me"         
                    
         >>> A=simple                              #类的别名
         >>> A                                       
                
         >>> A()                                         #类的一个实例
         OK ,It's me                                 
         <__main__.simple instance at 0x009EAAA8>    
         >>> b=A()                                   #类的一个实例
         OK ,It's me                                 
         >>> b                                       
         <__main__.simple instance at 0x009EAB20>    
         没有构造和析构函数 但是有初始化函数 就是那个__init__ 不是构造
         是为了初始化类中的数据。
         
         
33:继承
       class (parentclass1, parentclass2,...):
        每一个class object 都有一个__bases__ 的attribute来记录他的所以父类
        和c++的继承差不多, 同名name的处理也差不多,Python更简洁。
        class的实例的name会代替class object的name, class object的name会
        代替父类的name。多重继承中就要注意父类的出现顺序了。
        
34:静态成员变量
        C++中常用的,就是所有的类的实例都共享这个变量,可以用来
        记录有多少个类的实例化了。Python也有这样的东西。如:
       >>> class A:                                                 
        count=0                                              
        def __int__(self):                                   
                        self.__class__.count = self.__class__.count+1
                                                                    
                                                             
        >>> A.count                                                   
        0                                                            
        >>> a=A()                                                    
        >>> a.count                                                  
       1                                                        
        我在Python 2.3.4  IDLE 1.0.3中没有得到这个结果,
        gump说他的试验验证是对的。
        
        
35:抽象类
        class AbstractClass:
        def AbstrctMethord(self):
                raise NotImplementedError      #发送一个错误
        这是个抽象类的基本样子,以后慢慢补充。

      
以上是Python name space和 类 的一部分  下一篇将是Python 的类的下半部分

 邹胖小 2005年7月1日 祝大家快乐安康 周末愉快

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月01日 星期五 19:29

Qiangning Hong hongqn at gmail.com
Fri Jul 1 19:29:48 HKT 2005

Chao Zou wrote:
> 致谢:
> 在上两篇子中出现了一些错误,我谢谢很多兄弟们的指正
> 我会好好写例子改正过来的。这几天工作忙,耽误了几天。
> 又要出个很长时间的差了,但是我会坚持写完笔记。绝对不会
> 虎头蛇尾的,那天看到一个兄弟说好多人写笔记都半途而废。
> 我会努力的,不会让兄弟失望的,另外作为学习的检验我会
> 做完笔记后,写一个程序,现在暂时定为Python的贪吃蛇的游戏。

鼓励!

[...]
>         
>          >>> class simple:                           
>                 def __init__(self):                   #相当于c的main的入口
>                         print "OK ,It's me"         

__init__和C中的main函数没啥关系。

[...]
>         
> 34:静态成员变量
>         C++中常用的,就是所有的类的实例都共享这个变量,可以用来
>         记录有多少个类的实例化了。Python也有这样的东西。如:
>        >>> class A:                                                 
>         count=0                                              
>         def __int__(self):                                   
>                         self.__class__.count = self.__class__.count+1

这里也可以直接写成 A.count = A.count + 1
因为self.__class__就是A

>         >>> A.count                                                   
>         0                                                            
>         >>> a=A()                                                    
>         >>> a.count                                                  
>        1                                                        
>         我在Python 2.3.4  IDLE 1.0.3中没有得到这个结果,

是不是因为你上面的笔误,把__init__写成__int__了?

>         gump说他的试验验证是对的。
>         
>         
> 35:抽象类
>         class AbstractClass:
>         def AbstrctMethord(self):
>                 raise NotImplementedError      #发送一个错误
>         这是个抽象类的基本样子,以后慢慢补充。
> 
>       
> 以上是Python name space和 类 的一部分  下一篇将是Python 的类的下半部分
> 

-- 
Qiangning Hong

 _________________________________________________________
< What does "it" mean in the sentence "What time is it?"? >
 ---------------------------------------------------------
          \           \  /
           \           \/
               (__)    /\
               (--)   O  O
               _\/_   //
         *    (    ) //
          \  (\\    //
           \(  \\    )
            (   \\   )   /\
  ___[\______/^^^^^^^\__/) o-)__
 |\__[=======______//________)__\
 \|_______________//____________|
     |||      || //||     |||
     |||      || @.||     |||
      ||      \/  .\/      ||
                 . .
                '.'.`

            COW-OPERATION

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号