- 主题:python object没有“自己的名字”?
你这一大串代码实在看不下去,你就说你要的是不是reflection吧
一个动态到python这种程度的语言连reflection都没有那怎么可能
你要只是想让每个对象里面有个字符串唯一代表这个对象的名字,写个装饰器不得了...python基本全都是引用类型,鬼知道你一个对象被多少个变量名给引用了,你要它返回哪个名字才对?
【 在 vale 的大作中提到: 】
: 我虽然对python不熟,但这些还都懂。
: 核心问题是python的对象就是对象,用指向对象的变量来访问。而变量也没有所谓“名字”,至少是没法直接获得。
: 所以这段python程序中间定义的一堆变量名完全没有用,返回type数字的话完全不需要显式的声明这些变量。所以我最初看的时候被误导了。
: ...................
--
FROM 111.198.57.*
看清楚再喷,我说的是对象的名字,不是变量的名字
【 在 eggcar 的大作中提到: 】
: 你这一大串代码实在看不下去,你就说你要的是不是reflection吧
: 一个动态到python这种程度的语言连reflection都没有那怎么可能
: 你要只是想让每个对象里面有个字符串唯一代表这个对象的名字,写个装饰器不得了...python基本全都是引用类型,鬼知道你一个对象被多少个变量名给引用了,你要它返回哪个名字才对?
: ...................
--
FROM 101.229.0.*
我说了,你要自己给对象起名字的话就自己加个装饰器
【 在 vale 的大作中提到: 】
: 看清楚再喷,我说的是对象的名字,不是变量的名字
--
FROM 111.198.57.*
你要的是类的名字?
【 在 vale (浅谷 - mind over mountain) 的大作中提到: 】
: 看清楚再喷,我说的是对象的名字,不是变量的名字
--
修改:hgoldfish FROM 110.85.22.*
FROM 110.85.22.*

我在讨论语言特性,不是在讨论这么个简单功能该怎么实现
【 在 eggcar 的大作中提到: 】
: 我说了,你要自己给对象起名字的话就自己加个装饰器
:
--
FROM 101.229.0.*
我还是回答一下你的问题,python的对象本身是没有名字的,但指向它们的变量有。实在需要可以用这个办法变通:
import pywin32
idc_names = [n in pywin32 if n.startswith['IDC_']
# 然后idc_names[0], idc_names[1]...一个个比较,找到enum值和返回值一样的结果。
你一定要用tcl的习惯写python,硬邦邦的确实不妥的,建议下次发表观点柔和一点。。
【 在 vale (浅谷 - mind over mountain) 的大作中提到: 】
: 给你这种见识短的演示一下什么叫做对象的名字
: #!/usr/bin/tclsh
: proc GetCursorInfo {} {return 1234}
: proc LoadCursor args {return 1234}
: oo::class create cursor {
: variable handle
: constructor h { set handle $h }
: method handle {} { return $handle }
: self {
: method get_current_cursor {} {
: foreach c [info class instances [self]] {
: if {[$c handle] eq [GetCursorInfo]} { return $c }
: }
: }
: }
: }
: lmap c {APPSTARTING ARROW CROSS HAND HELP IBEAM ICON NO SIZE SIZEALL
: SIZENESW SIZENS SIZENWSE SIZEWE UPARROW WAIT } {
: cursor create $c [LoadCursor 0 IDC_$c]
: }
: puts [cursor get_current_cursor]
--
FROM 114.85.188.*
他要的是对象的名字。
熟悉python的metaclass构架完全可以实现一个的,我懒得打字了。。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 你要的是类的名字?
--
FROM 114.85.188.*
谢谢回答,和我已经理解的一样。
我一再说对象的名字,有些人不理解这个意思,有些人不相信有这个存在,有些人看不懂或不愿意看我贴的示例代码,张嘴就喷。
我觉得不柔和不是我,至少最开始不是我。
【 在 javaboy 的大作中提到: 】
: 我还是回答一下你的问题,python的对象本身是没有名字的,但指向它们的变量有。实在需要可以用这个办法变通:
: import pywin32
: idc_names = [n in pywin32 if n.startswith['IDC_']
: ...................
--
FROM 101.229.0.*
集成电路工具很多用tcl做自动化的。我也用tcl,也觉得tcl很棒。
但python也不是徒有虚名的。。。你了解多一点就会知道了。你要的功能在python里完全可以实现,给每个新建的对象自动命个名一点难度都没有。就是要想自动化创建1000个新类型Foo001,Foo002.....都是可以做到的。
具体看type函数的文档。需要费点脑子,但我相信你有能力看懂的。
【 在 vale (浅谷 - mind over mountain) 的大作中提到: 】
: 谢谢回答,和我已经理解的一样。
: 我一再说对象的名字,有些人不理解这个意思,有些人不相信有这个存在,有些人看不懂或不愿意看我贴的示例代码,张嘴就喷。
: 我觉得不柔和不是我,至少最开始不是我。
--
FROM 114.85.188.*
你先给 对象的名字 下个定义吧,谁给对象起的名字?
【 在 vale 的大作中提到: 】
: 我在讨论语言特性,不是在讨论这么个简单功能该怎么实现
: :
--
FROM 221.222.21.*