- 主题:python object没有“自己的名字”?
没看我在吐槽么,这个不是我写的
【 在 omni 的大作中提到: 】
: 你这编程想法就不对。
:
--
FROM 101.229.0.*
他说的应该就是你的想法,不是你贴的代码。
目测接触不超过两种编程语言,代码行数不超过5000行。
请列出保留名字信息的程序语言。
【 在 vale 的大作中提到: 】
: 没看我在吐槽么,这个不是我写的
: :
--
FROM 223.72.72.*
给你这种见识短的演示一下什么叫做对象的名字
#!/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]
【 在 hillg 的大作中提到: 】
: 他说的应该就是你的想法,不是你贴的代码。
: 目测接触不超过两种编程语言,代码行数不超过5000行。
: 请列出保留名字信息的程序语言。
--
FROM 218.241.217.*
让你列出语言,你就直接列出语言好了。
tcl我不熟,如果要举例,那很好,但是如果一个对象的名字需要这么长的代码举例,那我不知道是tcl的问题还是你的问题。
【 在 vale 的大作中提到: 】
: 给你这种见识短的演示一下什么叫做对象的名字
: #!/usr/bin/tclsh
: proc GetCursorInfo {} {return 1234}
: ...................
--
FROM 223.72.72.*
APPSTARTING = Cursor(IDC_APPSTARTING)
这里是用IDC_xxxx这个数字作为参数来初始化一个Cursor对象,
创建好后才让变量APPSTARTING指向它。
在初始化时self.type = 参数,传进来的参数IDC_xxx的值是个数字,
self.type当然是数字了。
在构造这个Cursor对象的时候APPSTARTING这个变量还不存在,
你想怎么把它的名字带进Cursor对象去?总不能因为后续把
APPSTARTING指到这个对象了,对象中的<<某个属性>>就自动更新。
就算Python可以跟踪指到一个对象的所有变量,并获取变量的名字,
那也不会存放在这个对象里你自己定义的属性上。
这算是个X-Y问题吧,不是Python里能不能获得对象名字的问题,
而是你这种写法不对。
【 在 vale (浅谷 - mind over mountain) 的大作中提到: 】
: DEFAULT_CURSORS \
: = APPSTARTING, ARROW, CROSS, HAND, HELP, IBEAM, ICON, NO, SIZE, SIZEALL, \
: SIZENESW, SIZENS, SIZENWSE, SIZEWE, UPARROW, WAIT \
: ...................
--
FROM 122.225.220.*
我前面就回复过TclOO,你自己不熟就不熟,还来质疑我,以为所有语言都没有对象名字。
我这段代码是完全仿照前面python代码的程序逻辑和功能,就是来演示对象名字是什么。
不懂没关系,说话客气点
【 在 hillg 的大作中提到: 】
: 让你列出语言,你就直接列出语言好了。
: tcl我不熟,如果要举例,那很好,但是如果一个对象的名字需要这么长的代码举例,那我不知道是tcl的问题还是你的问题。
:
: ...................
--
FROM 218.241.217.*
我虽然对python不熟,但这些还都懂。
核心问题是python的对象就是对象,用指向对象的变量来访问。而变量也没有所谓“名字”,至少是没法直接获得。
所以这段python程序中间定义的一堆变量名完全没有用,返回type数字的话完全不需要显式的声明这些变量。所以我最初看的时候被误导了。
但并不是所有语言都这样。tcl里对象有名字,这个名字就是可以用来访问method的命令,不需要用一个变量去指向对象。
【 在 adoal 的大作中提到: 】
: APPSTARTING = Cursor(IDC_APPSTARTING)
: 这里是用IDC_xxxx这个数字作为参数来初始化一个Cursor对象,
: 创建好后才让变量APPSTARTING指向它。
: ...................
--
FROM 218.241.217.*
换个写法用named tuple或者干脆ordered dict?
反正你需要的是一个字符串名字作为访问其值的索引,
并不是真的一定要一堆可以获取名字的变量。
【 在 vale (浅谷 - mind over mountain) 的大作中提到: 】
: 我虽然对python不熟,但这些还都懂。
: 核心问题是python的对象就是对象,用指向对象的变量来访问。而变量也没有所谓“名字”,至少是没法直接获得。
: 所以这段python程序中间定义的一堆变量名完全没有用,返回type数字的话完全不需要显式的声明这些变量。所以我最初看的时候被误导了。
: ...................
--
修改:adoal FROM 122.225.220.*
FROM 122.225.220.*
好吧,我只接触过20小时的tcl,用来写一个软件的扩展程序,限定tcl8.5,没有意识到tclOO是指语言的名字,所以前面看帖时,脑子里自动就把你那个帖子忽略过去了,我的错,向你道歉。
有空时我学习一下新的tclOO部分。
【 在 vale 的大作中提到: 】
: 我前面就回复过TclOO,你自己不熟就不熟,还来质疑我,以为所有语言都没有对象名字。
: 我这段代码是完全仿照前面python代码的程序逻辑和功能,就是来演示对象名字是什么。
: 不懂没关系,说话客气点
: ...................
--
FROM 223.72.72.*