Python论坛  - 讨论区

标题:[python-chinese] 还是请教一些名称的问题

2006年01月05日 星期四 17:03

风向标-Vane vaneoooo at gmail.com
Thu Jan 5 17:03:17 HKT 2006

__mian__ 特殊对象?
怎么去理解它呢?它的作用是??
还有相关的很多__***__的
作为一个内置的功能函数去理解??还是怎么??
还有关于python的类
它也是和C++一样,在未对类进行实例化之前,类是不占用不存在于任何空间的吗?
那为什么如下程序片段:

class a:
   i=55

b=a
b.i
>>55

会这样呢?在未对类进行对象实例化之前.i的值放在哪呢?

我昨天看了一天啄木鸟  同一份文档连续看20遍也不觉得开窍.
特别是__***__这类东西.

还请牛人指教

刚才突然停电,不知道前一封发出去没有
所以再发一次,如果有重复还请见谅
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060105/70adabb9/attachment.html

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

2006年01月05日 星期四 18:24

Hong Yuan hongyuan at homemaster.cn
Thu Jan 5 18:24:51 HKT 2006

风向标-Vane wrote:

> __mian__ 特殊对象?
> 怎么去理解它呢?它的作用是??

__main__不是一个对象,只是__name__变量的一个可能的值,代表当前为主模块。

> 还有相关的很多__***__的
> 作为一个内置的功能函数去理解??还是怎么??

通常python的命名规则以__***__代表一些类的特殊方法。具体请参加Python的文档。

> 还有关于python的类
> 它也是和C++一样,在未对类进行实例化之前,类是不占用不存在于任何空间的吗?
> 那为什么如下程序片段:
> class a:
> i=55
> b=a
> b.i
> >>55

Python中所有的东西都是对象,类也是一个对象。解释器执行完类的定义后,类对
象就存在于内存中了。

>>> class a:
... i = 55
...
>>> a

>>> type(a)


可以看到a是一个classobj类型的对象,地址已经分配。i是该类的类变量。

> 会这样呢?在未对类进行对象实例化之前.i的值放在哪呢?
> 我昨天看了一天啄木鸟 同一份文档连续看20遍也不觉得开窍.
> 特别是__***__这类东西.
> 还请牛人指教
> 刚才突然停电,不知道前一封发出去没有
> 所以再发一次,如果有重复还请见谅
>
>------------------------------------------------------------------------
>
>_______________________________________________
>python-chinese
>Post: send python-chinese at lists.python.cn
>Subscribe: send subscribe to python-chinese-request at lists.python.cn
>Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
>Detail Info: http://python.cn/mailman/listinfo/python-chinese
>

-- 
HONG Yuan

大管家网上建材超市
http://www.homemaster.cn
Tel: 021-50941728
Fax: 021-50941727


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

2006年01月06日 星期五 09:42

Robert Chen search.pythoner at gmail.com
Fri Jan 6 09:42:53 HKT 2006

在Python中,需要注意有一点与传统的静态语言很不同。就是Python中没有任何声明语句,所有的语句都可执行
而且必须被执行。

比如在C++中,class A{},是一个类声明,这个声明是在编译时被处理,只有在对其进行实例化之后其成员变量
才能被访问。
然而在Python中,class A:是一条语句,经过编译后这条语句会产生一系列的字节码,Python解释器在发现这条语句
后,即使并没有出现实例化的动作,也会立即执行这些字节码。执行这些字节码的结果是Python内部会为A创建一个
在Python中表示class的对象―PyClassObject对象(注意,这里与静态的C++有很大不同,在C++中,类并不是在内存
中实际存在的东西,只有类的实例才会出现在内存中,而Python中,类也是一个在内存中存在的对象)。在PyClassObject
对象中会有一个dict对象(可以想象成Python中的dict或C++中的map),其中会维护着属于class的名字与值的对应关系。
在你的例子中('a',1)就是这样一个关系。
所以当class A:这条语句被Python解释器执行后,a已经存在于内存中,对它进行访问是再正常不过的事情。

其实从上面的分析中,你还可以得出这样一个结论,在class A的定义中,a是必须被赋予初值的,因为它作为一个"名字"
和某一个"值"搭配,存储到PyClassObject对象的dict对象中。你可以试试下面的定义:
class A:
    i

print A.i
一定会在执行class A处就抛出异常。
对比一下C++:
class A
{
    int i;
}
这个C++的类定义是合法的,这里清晰地显示了在Python中,没有声明语句,每一条语句都会被执行,而且必须能够被执行。

关于Python中类机制的剖析,包括classic class和new style
class,我会在不久后share出来,请关注《Python源码剖析》系列文章http://blog.donews.com/lemur/。


On 1/5/06, 风向标-Vane <vaneoooo at gmail.com> wrote:
>
> __mian__ 特殊对象?
> 怎么去理解它呢?它的作用是??
> 还有相关的很多__***__的
> 作为一个内置的功能函数去理解??还是怎么??
> 还有关于python的类
> 它也是和C++一样,在未对类进行实例化之前,类是不占用不存在于任何空间的吗?
> 那为什么如下程序片段:
>
> class a:
>    i=55
>
> b=a
> b.i
> >>55
>
> 会这样呢?在未对类进行对象实例化之前.i的值放在哪呢?
>
> 我昨天看了一天啄木鸟  同一份文档连续看20遍也不觉得开窍.
> 特别是__***__这类东西.
>
> 还请牛人指教
>
> 刚才突然停电,不知道前一封发出去没有
> 所以再发一次,如果有重复还请见谅
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060106/ce65f556/attachment-0001.html

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

2006年01月06日 星期五 10:42

xxmplus xxmplus at gmail.com
Fri Jan 6 10:42:53 HKT 2006

cpp/java是强类型语言,python是脚本语言,两者乃本质区别

在 06-1-6,Robert Chen<search.pythoner at gmail.com> 写道:
> 在Python中,需要注意有一点与传统的静态语言很不同。就是Python中没有任何声明语句,所有的语句都可执行
> 而且必须被执行。
>
> 比如在C++中,class A{},是一个类声明,这个声明是在编译时被处理,只有在对其进行实例化之后其成员变量
> 才能被访问。
> 然而在Python中,class
> A:是一条语句,经过编译后这条语句会产生一系列的字节码,Python解释器在发现这条语句
> 后,即使并没有出现实例化的动作,也会立即执行这些字节码。执行这些字节码的结果是Python内部会为A创建一个
> 在Python中表示class的对象―PyClassObject对象(注意,这里与静态的C++有很大不同,在C++中,类并不是在内存
> 中实际存在的东西,只有类的实例才会出现在内存中,而Python中,类也是一个在内存中存在的对象)。在PyClassObject
> 对象中会有一个dict对象(可以想象成Python中的dict或C++中的map),其中会维护着属于class的名字与值的对应关系。
> 在你的例子中('a',1)就是这样一个关系。
> 所以当class A:这条语句被Python解释器执行后,a已经存在于内存中,对它进行访问是再正常不过的事情。
>
> 其实从上面的分析中,你还可以得出这样一个结论,在class A的定义中,a是必须被赋予初值的,因为它作为一个"名字"
> 和某一个"值"搭配,存储到PyClassObject对象的dict对象中。你可以试试下面的定义:
> class A:
>     i
>
> print A.i
> 一定会在执行class A处就抛出异常。
> 对比一下C++:
> class A
> {
>     int i;
> }
> 这个C++的类定义是合法的,这里清晰地显示了在Python中,没有声明语句,每一条语句都会被执行,而且必须能够被执行。
>
> 关于Python中类机制的剖析,包括classic class和new style
> class,我会在不久后share出来,请关注《Python源码剖析》系列文章http://blog.donews.com/lemur/。
>
>
> On 1/5/06, 风向标-Vane <vaneoooo at gmail.com> wrote:
> >
> >
> > __mian__ 特殊对象?
> > 怎么去理解它呢?它的作用是??
> > 还有相关的很多__***__的
> > 作为一个内置的功能函数去理解??还是怎么??
> > 还有关于python的类
> > 它也是和C++一样,在未对类进行实例化之前,类是不占用不存在于任何空间的吗?
> > 那为什么如下程序片段:
> >
> > class a:
> >    i=55
> >
> > b=a
> > b.i
> > >>55
> >
> > 会这样呢?在未对类进行对象实例化之前.i的值放在哪呢?
> >
> > 我昨天看了一天啄木鸟  同一份文档连续看20遍也不觉得开窍.
> > 特别是__***__这类东西.
> >
> > 还请牛人指教
> >
> > 刚才突然停电,不知道前一封发出去没有
> > 所以再发一次,如果有重复还请见谅
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> > Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>

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

2006年01月06日 星期五 10:45

Robert Chen search.pythoner at gmail.com
Fri Jan 6 10:45:37 HKT 2006

其实,Python同样是强类型的,有一套完善的类型系统

On 1/6/06, xxmplus <xxmplus at gmail.com> wrote:
>
> cpp/java是强类型语言,python是脚本语言,两者乃本质区别
>
> 在 06-1-6,Robert Chen<search.pythoner at gmail.com> 写道:
> > 在Python中,需要注意有一点与传统的静态语言很不同。就是Python中没有任何声明语句,所有的语句都可执行
> > 而且必须被执行。
> >
> > 比如在C++中,class A{},是一个类声明,这个声明是在编译时被处理,只有在对其进行实例化之后其成员变量
> > 才能被访问。
> > 然而在Python中,class
> > A:是一条语句,经过编译后这条语句会产生一系列的字节码,Python解释器在发现这条语句
> > 后,即使并没有出现实例化的动作,也会立即执行这些字节码。执行这些字节码的结果是Python内部会为A创建一个
> > 在Python中表示class的对象―PyClassObject对象(注意,这里与静态的C++有很大不同,在C++中,类并不是在内存
> > 中实际存在的东西,只有类的实例才会出现在内存中,而Python中,类也是一个在内存中存在的对象)。在PyClassObject
> > 对象中会有一个dict对象(可以想象成Python中的dict或C++中的map),其中会维护着属于class的名字与值的对应关系。
> > 在你的例子中('a',1)就是这样一个关系。
> > 所以当class A:这条语句被Python解释器执行后,a已经存在于内存中,对它进行访问是再正常不过的事情。
> >
> > 其实从上面的分析中,你还可以得出这样一个结论,在class A的定义中,a是必须被赋予初值的,因为它作为一个"名字"
> > 和某一个"值"搭配,存储到PyClassObject对象的dict对象中。你可以试试下面的定义:
> > class A:
> >     i
> >
> > print A.i
> > 一定会在执行class A处就抛出异常。
> > 对比一下C++:
> > class A
> > {
> >     int i;
> > }
> > 这个C++的类定义是合法的,这里清晰地显示了在Python中,没有声明语句,每一条语句都会被执行,而且必须能够被执行。
> >
> > 关于Python中类机制的剖析,包括classic class和new style
> > class,我会在不久后share出来,请关注《Python源码剖析》系列文章http://blog.donews.com/lemur/。
> >
> >
> > On 1/5/06, 风向标-Vane <vaneoooo at gmail.com> wrote:
> > >
> > >
> > > __mian__ 特殊对象?
> > > 怎么去理解它呢?它的作用是??
> > > 还有相关的很多__***__的
> > > 作为一个内置的功能函数去理解??还是怎么??
> > > 还有关于python的类
> > > 它也是和C++一样,在未对类进行实例化之前,类是不占用不存在于任何空间的吗?
> > > 那为什么如下程序片段:
> > >
> > > class a:
> > >    i=55
> > >
> > > b=a
> > > b.i
> > > >>55
> > >
> > > 会这样呢?在未对类进行对象实例化之前.i的值放在哪呢?
> > >
> > > 我昨天看了一天啄木鸟  同一份文档连续看20遍也不觉得开窍.
> > > 特别是__***__这类东西.
> > >
> > > 还请牛人指教
> > >
> > > 刚才突然停电,不知道前一封发出去没有
> > > 所以再发一次,如果有重复还请见谅
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060106/400ba7cf/attachment.html

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

2006年01月06日 星期五 10:59

boyeestudio boyee118 at gmail.com
Fri Jan 6 10:59:51 HKT 2006

楼上大哥说详细点吧。类型系统什么的?
谢!

在06-1-6,Robert Chen <search.pythoner at gmail.com> 写道:
>
> 其实,Python同样是强类型的,有一套完善的类型系统<http://python.cn/mailman/listinfo/python-chinese>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060106/bcb5c315/attachment.htm

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

2006年01月06日 星期五 11:08

xxmplus xxmplus at gmail.com
Fri Jan 6 11:08:24 HKT 2006

说详细点?

我的理解是强类型语言是指变量使用前要指定类型,生命期内类型不可以任意改变。

在 06-1-6,Robert Chen<search.pythoner at gmail.com> 写道:
> 其实,Python同样是强类型的,有一套完善的类型系统
>
>
>
> On 1/6/06, xxmplus <xxmplus at gmail.com> wrote:
> > cpp/java是强类型语言,python是脚本语言,两者乃本质区别
> >
> > 在 06-1-6,Robert Chen< search.pythoner at gmail.com> 写道:
> > > 在Python中,需要注意有一点与传统的静态语言很不同。就是Python中没有任何声明语句,所有的语句都可执行
> > > 而且必须被执行。
> > >
> > > 比如在C++中,class A{},是一个类声明,这个声明是在编译时被处理,只有在对其进行实例化之后其成员变量
> > > 才能被访问。
> > > 然而在Python中,class
> > > A:是一条语句,经过编译后这条语句会产生一系列的字节码,Python解释器在发现这条语句
> > > 后,即使并没有出现实例化的动作,也会立即执行这些字节码。执行这些字节码的结果是Python内部会为A创建一个
> > >
> 在Python中表示class的对象―PyClassObject对象(注意,这里与静态的C++有很大不同,在C++中,类并不是在内存
> > >
> 中实际存在的东西,只有类的实例才会出现在内存中,而Python中,类也是一个在内存中存在的对象)。在PyClassObject
> > >
> 对象中会有一个dict对象(可以想象成Python中的dict或C++中的map),其中会维护着属于class的名字与值的对应关系。
> > > 在你的例子中('a',1)就是这样一个关系。
> > > 所以当class A:这条语句被Python解释器执行后,a已经存在于内存中,对它进行访问是再正常不过的事情。
> > >
> > > 其实从上面的分析中,你还可以得出这样一个结论,在class A的定义中,a是必须被赋予初值的,因为它作为一个"名字"
> > > 和某一个"值"搭配,存储到PyClassObject对象的dict对象中。你可以试试下面的定义:
> > > class A:
> > >     i
> > >
> > > print A.i
> > > 一定会在执行class A处就抛出异常。
> > > 对比一下C++:
> > > class A
> > > {
> > >     int i;
> > > }
> > >
> 这个C++的类定义是合法的,这里清晰地显示了在Python中,没有声明语句,每一条语句都会被执行,而且必须能够被执行。
> > >
> > > 关于Python中类机制的剖析,包括classic class和new style
> > >
> class,我会在不久后share出来,请关注《Python源码剖析》系列文章http://blog.donews.com/lemur/。
> > >
> > >
> > > On 1/5/06, 风向标-Vane <vaneoooo at gmail.com> wrote:
> > > >
> > > >
> > > > __mian__ 特殊对象?
> > > > 怎么去理解它呢?它的作用是??
> > > > 还有相关的很多__***__的
> > > > 作为一个内置的功能函数去理解??还是怎么??
> > > > 还有关于python的类
> > > > 它也是和C++一样,在未对类进行实例化之前,类是不占用不存在于任何空间的吗?
> > > > 那为什么如下程序片段:
> > > >
> > > > class a:
> > > >    i=55
> > > >
> > > > b=a
> > > > b.i
> > > > >>55
> > > >
> > > > 会这样呢?在未对类进行对象实例化之前.i的值放在哪呢?
> > > >
> > > > 我昨天看了一天啄木鸟  同一份文档连续看20遍也不觉得开窍.
> > > > 特别是__***__这类东西.
> > > >
> > > > 还请牛人指教
> > > >
> > > > 刚才突然停电,不知道前一封发出去没有
> > > > 所以再发一次,如果有重复还请见谅
> > > > _______________________________________________
> > > > python-chinese
> > > > Post: send python-chinese at lists.python.cn
> > > > Subscribe: send subscribe to
> > > python-chinese-request at lists.python.cn
> > > > Unsubscribe: send unsubscribe to
> > > python-chinese-request at lists.python.cn
> > > > Detail Info:
> > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > >
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to
> > > python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request at lists.python.cn
> > > Detail Info:
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> > Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>

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

2006年01月06日 星期五 11:25

limodou limodou at gmail.com
Fri Jan 6 11:25:46 HKT 2006

在 06-1-6,xxmplus<xxmplus at gmail.com> 写道:
> 说详细点?
>
> 我的理解是强类型语言是指变量使用前要指定类型,生命期内类型不可以任意改变。
>

强类型是指一旦一个变量具有某个类型,这个类型就不能变了。比如:

a = '1'
a + 1

就会报错,因为a是一个字符串,而1是整数,但在有些语言却是可以自动转化的。python不会自动转化。使用前指定类型可以称作静态类型,而python是动态类型+强类型。

--
I like python!
My Blog: http://www.donews.net/limodou
NewEdit Maillist: http://groups.google.com/group/NewEdit

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

2006年01月06日 星期五 11:34

Robert Chen search.pythoner at gmail.com
Fri Jan 6 11:34:30 HKT 2006

From 《Dive Into Python》 :
http://www.woodpecker.org.cn:9081/doc/diveintopython_limodou/html/odbchelper_funcdef.html
静态类型定义语言
一种在编译时,数据类型是固定的语言。大多数静态类型定义语言强制这一点,它要求你在使用所有变量之前要声明它们的数据类型。Java和C是静态类型定义语言。
动态类型定义语言
一种在执行期间才去发现数据类型的语言,与静态类型定义相反。VBScript和Python是动态类型定义的,因为它们是在第一次给一个变量赋值的时候找出它的类型的。

强类型定义语言
一种总是强制类型定义的语言。Java和Python是强制类型定义的。如果你有一个整数,如果不显示地进行转换,你不能将其视为一个字符串(在本章后面会有更多如何去做的内容)。

弱类型定义语言
一种类型可以被忽略的语言,与强类型定义相反。VBScript是弱类型定义的。在VBScript中,可以将字符串 '12' 和整数 3 进行连接得到字符串
'123',然后可以把它看成整数 123,而不需要显示转换。
所以Python即是动态类型定义(因为它不使用显示数据类型声明),又是强类型定义(因为一旦一个变量具有一个数据类型,它实际上就一直是这个类型了)。

在Python中可以做到动态类型,比如:
a = 1      //PyIntObject
a = 'str'   //PyStrObject

看上去似乎不像强类型,但这里的关键在于,并不是变量的类型变了,而是名字"a"的绑定关系变了,在第一行,"a"绑定到了一个整数对象
而在第二行,"a"绑定到了一个字符串对象。而Python内部创建的两个变量,一个整数对象,一个字符串对象,其类型是永远不可能改变的。
所以在考虑Python时,应该注意名称以及名称绑定的变量的区别,基于这种绑定的转换,Python才实现了动态类型特性。




On 1/6/06, xxmplus <xxmplus at gmail.com> wrote:
>
> 说详细点?
>
> 我的理解是强类型语言是指变量使用前要指定类型,生命期内类型不可以任意改变。
>
> 在 06-1-6,Robert Chen<search.pythoner at gmail.com> 写道:
> > 其实,Python同样是强类型的,有一套完善的类型系统
> >
> >
> >
> > On 1/6/06, xxmplus <xxmplus at gmail.com> wrote:
> > > cpp/java是强类型语言,python是脚本语言,两者乃本质区别
> > >
> > > 在 06-1-6,Robert Chen< search.pythoner at gmail.com> 写道:
> > > > 在Python中,需要注意有一点与传统的静态语言很不同。就是Python中没有任何声明语句,所有的语句都可执行
> > > > 而且必须被执行。
> > > >
> > > > 比如在C++中,class A{},是一个类声明,这个声明是在编译时被处理,只有在对其进行实例化之后其成员变量
> > > > 才能被访问。
> > > > 然而在Python中,class
> > > > A:是一条语句,经过编译后这条语句会产生一系列的字节码,Python解释器在发现这条语句
> > > > 后,即使并没有出现实例化的动作,也会立即执行这些字节码。执行这些字节码的结果是Python内部会为A创建一个
> > > >
> > 在Python中表示class的对象―PyClassObject对象(注意,这里与静态的C++有很大不同,在C++中,类并不是在内存
> > > >
> > 中实际存在的东西,只有类的实例才会出现在内存中,而Python中,类也是一个在内存中存在的对象)。在PyClassObject
> > > >
> > 对象中会有一个dict对象(可以想象成Python中的dict或C++中的map),其中会维护着属于class的名字与值的对应关系。
> > > > 在你的例子中('a',1)就是这样一个关系。
> > > > 所以当class A:这条语句被Python解释器执行后,a已经存在于内存中,对它进行访问是再正常不过的事情。
> > > >
> > > > 其实从上面的分析中,你还可以得出这样一个结论,在class A的定义中,a是必须被赋予初值的,因为它作为一个"名字"
> > > > 和某一个"值"搭配,存储到PyClassObject对象的dict对象中。你可以试试下面的定义:
> > > > class A:
> > > >     i
> > > >
> > > > print A.i
> > > > 一定会在执行class A处就抛出异常。
> > > > 对比一下C++:
> > > > class A
> > > > {
> > > >     int i;
> > > > }
> > > >
> > 这个C++的类定义是合法的,这里清晰地显示了在Python中,没有声明语句,每一条语句都会被执行,而且必须能够被执行。
> > > >
> > > > 关于Python中类机制的剖析,包括classic class和new style
> > > >
> > class,我会在不久后share出来,请关注《Python源码剖析》系列文章http://blog.donews.com/lemur/。
> > > >
> > > >
> > > > On 1/5/06, 风向标-Vane <vaneoooo at gmail.com> wrote:
> > > > >
> > > > >
> > > > > __mian__ 特殊对象?
> > > > > 怎么去理解它呢?它的作用是??
> > > > > 还有相关的很多__***__的
> > > > > 作为一个内置的功能函数去理解??还是怎么??
> > > > > 还有关于python的类
> > > > > 它也是和C++一样,在未对类进行实例化之前,类是不占用不存在于任何空间的吗?
> > > > > 那为什么如下程序片段:
> > > > >
> > > > > class a:
> > > > >    i=55
> > > > >
> > > > > b=a
> > > > > b.i
> > > > > >>55
> > > > >
> > > > > 会这样呢?在未对类进行对象实例化之前.i的值放在哪呢?
> > > > >
> > > > > 我昨天看了一天啄木鸟  同一份文档连续看20遍也不觉得开窍.
> > > > > 特别是__***__这类东西.
> > > > >
> > > > > 还请牛人指教
> > > > >
> > > > > 刚才突然停电,不知道前一封发出去没有
> > > > > 所以再发一次,如果有重复还请见谅
> > > > > _______________________________________________
> > > > > python-chinese
> > > > > Post: send python-chinese at lists.python.cn
> > > > > Subscribe: send subscribe to
> > > > python-chinese-request at lists.python.cn
> > > > > Unsubscribe: send unsubscribe to
> > > > python-chinese-request at lists.python.cn
> > > > > Detail Info:
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > python-chinese
> > > > Post: send python-chinese at lists.python.cn
> > > > Subscribe: send subscribe to
> > > > python-chinese-request at lists.python.cn
> > > > Unsubscribe: send unsubscribe to
> > > > python-chinese-request at lists.python.cn
> > > > Detail Info:
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060106/ef1b015a/attachment.html

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号