亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 5378 | 回復(fù): 20
打印 上一主題 下一主題

類的挑戰(zhàn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-03-26 21:34 |只看該作者 |倒序?yàn)g覽
20可用積分
最近在寫一個(gè)很不爽的程序。
要求有一個(gè)類:

  1. <some code>
  2. class name(<some object here>):
  3.   def __init__(self<,some others>):
  4.     <some code>
  5.     pass;
  6.   <something>
  7.   def getname(<something>):
  8.     <something>
  9.   def __getattr__(self,name):
  10.     if name=='name' :
  11.       return self.getname()
  12.     else :
  13.       <some code>
  14. abc=name();
  15. print abc.name;
  16. h=name();
  17. print h.name;
  18. x=abc;
  19. print x.name;
復(fù)制代碼

輸出:
abc
h
x
求助。
小魚版主救救我哈……
QQQ&&BOW

[ 本帖最后由 victorlee129 于 2009-3-26 21:41 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-03-26 21:40 |只看該作者
補(bǔ)充:就是要寫<>里面的片段……

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-03-27 10:13 |只看該作者
原帖由 victorlee129 于 2009-3-26 21:34 發(fā)表
最近在寫一個(gè)很不爽的程序。
要求有一個(gè)類:


class name():
  def __init__(self):
   
    pass;
  
  def getname():
   
  def __getattr__(self,name):
    if name=='name' :
      retu ...

前面兩個(gè)還好說 我沒找到提取instance name的方法不過我想是應(yīng)該有的,不過你把實(shí)例名作為參數(shù)放在類的變量里也可以的
class name:
  def __init__(self,name):
      self.name=name
      print self.name

i='abc'
exec(i+'=name'+'('+repr(i)+')')

下面的我覺得不可能實(shí)現(xiàn)了吧。。。他僅僅是賦值他沒有創(chuàng)建新的實(shí)例,僅僅是把a(bǔ)bc實(shí)例后的值賦給x而已
x=abc;
print x.name

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-03-27 11:44 |只看該作者
樓上的倒不失為一種解決辦法

但有 bugger


  1. class name:
  2.   def __init__(self,name):
  3.       self.name=name

  4. ins1 = name("ins1")
  5. #在此可以 ins1.name == "ins1"

  6. ins2 = ins1
  7. #就不可以了 ins2.name == "ins1"
復(fù)制代碼

[ 本帖最后由 izhier 于 2009-3-27 11:45 編輯 ]

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-03-28 00:07 |只看該作者
class name:
    def __init__(self):
        pass;
  
    def getname(self):
        import traceback
        s =  traceback.extract_stack()

        import re
        return re.split(r'[\s\=.]+',s[-3][-1].split()[-1])[-2]         


    def __getattr__(self,name):
        if name=='name' :
            return self.getname();
        else :
            return '';

abc=name();
print abc.name;

h=name();
print h.name;

x=abc;
print x.name;




效仿Java的.呵呵. 要根據(jù)具體情況調(diào)用;
我來拋磚引玉了.

換用正則替換. 解決你遇到的幾個(gè)BUG.

[ 本帖最后由 bohemia 于 2009-3-28 11:55 編輯 ]

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2009-03-28 09:40 |只看該作者
好!
如果不import似乎就不行了?

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-03-28 10:35 |只看該作者
不對(duì),


  1. class tmp:pass;
  2. x=tmp();
  3. x.t=name();
  4. print x.t.name;
復(fù)制代碼

輸出的是 x 而不是 t

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-03-28 10:36 |只看該作者
return s[0][-1].split()[-1].split('.')[0]
這一句應(yīng)該為:
return s[0][-1].split()[-1].split('.')[-2]

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2009-03-28 10:40 |只看該作者
!
還有bug!

def testit():
  x=name();
  print x.name;
return s[0][-1].split()[-1].split('.')[-2]
應(yīng)再改為return s[-3][-1].split()[-1].split('.')[-2]

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2009-03-28 10:56 |只看該作者
另一個(gè):我不知道怎么修正的bug:
x=name();
y=x.name;
print y

輸出:
y=x;
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP