Differences between revisions 131 and 132
Revision 131 as of 2004-08-28 16:38:24
Size: 60609
Editor: DavidGoodger
Comment:
Revision 132 as of 2004-10-21 09:09:28
Size: 40773
Editor: 218
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[TableOfContents()]] **************Please do not delete,I send this message only one time,in order to introduce some japan website.IF you delete,I will publish every day.***************
Line 3: Line 3:
== What is a Decorator == I am from JAPAN,I want to introduce some very good JAPAN sites to you ,so you can find something about JAPAN cluture,people.
Line 5: Line 5:
A decorator is the name used for a software design pattern. Decorators dynamically alter the functionality of a function, method, or class without having to directly use subclasses or change the source code of the function being decorated. [http://www.ec51.com importers]
[http://www.ec51.com distributors]
[http://www.ec51.com buyers]
[http://www.ec51.com 供求信息]
[http://www.ec51.comsitemap.htm EC51 sitemap]
[http://www.58798309dyb.com 公司注册,注册公司]
[http://www.ec198.com 网站推广]
[http://www.ec198.com 网站排名]
[http://www.ec51.cn Google排名]
[http://www.ec51.cn 搜索引擎排名]
[http://www.ec51.org 网站建设]
[http://www.58798309dyb.com 公司注册]
[http://www.58798309dyb.com 注册公司]
[http://www.58798309dyb.com 上海公司注册]
[http://www.58798309dyb.com 海外公司注册] [http://www.ec51.comindex1.php 外贸]
[http://glassfurniture.ec51.net glass furniture]
[http://officefurniture.ec51.net office furniture]
[http://washer.ec51.net washer]
[http://padlock.ec51.net padlock]
[http://handbag.ec51.net handbags]
[http://diamond-saw-blades.ec51.net Diamond Saw Blades]
[http://backpack.ec51.net backpack]
[http://briefcase.ec51.net briefcase]
[http://jewellery.ec51.net jewellery]
[http://www.xmtmdart.com Dartboard]
[http://www.ec51.cominfo.php 供求信息]
[http://www.ec51.comcom.php 公司库]
[http://www.ec51.compro.php 产品库]
[http://www.ec51.comen/info.php tradeleads]
[http://www.ec51.comen/com.php company diretory]
[http://www.ec51.comen/pro.php products]
[http://www.58798309dyb.comnews.asp?id=188 网络科技公司注册]
[http://www.58798309dyb.comnews.asp?id=185 商业贸易公司注册]
[http://www.58798309dyb.comnews.asp?id=184 酒店管理公司注册]
[http://www.ec51.comen/info.php/ B2B offers]
[http://www.ec51.comen/com.php/ china suppliers]
[http://www.ec51.comen/pro.php/ china products]
[http://www.ec198.com 网站推广]
[http://www.ec51.cn 虚拟主机,网站建设]
[http://www.ec51.cn/web.htm 网页设计]
[http://www.ec51.cn/isp.htm 网站空间]
[http://www.ec91.com 网址大全]
[http://www.ec91.comchat.htm 聊天]
[http://www.ec91.comlove.htm 交友]
[http://www.ec51.comwz 网址大全]
[http://www.ec91.comprogram.htm 科技]
[http://www.ec91.comfcys.htm 房产]
[http://www.ec91.comszsm.htm 时装商贸]
[http://www.ec91.comzjzz.htm 政府组织]
[http://www.ec91.comnav.htm 省会城市]
[http://www.ec51.comlink.htm 友情链接]
[http://www.ec51.cn 网页设计]
[http://www.ec51.org yahoo排名]
[http://www.ec91.com 网址精选]
[http://www.58798309dyb.com 外贸公司注册]
[http://www.58798309dyb.com 上海注册公司]
[http://www.58798309dyb.com 高科技公司注册]
[http://www.58798309dyb.com 美国公司注册]  
[http://www.58798309dyb.com 工商注册]
[http://www.58798309dyb.com 上海工商注册]  
[http://hotel.ec51.net 酒店预订]
[http://datahf.ec51.net 数据恢复]
[http://ticket.ec51.net 机票]
[http://translate.ec51.net 翻译公司]
[http://manger.ec51.net 管理咨询]
[http://marketing.ec51.net 网络营销]
[http://meeting.ec51.net 视频会议]
[http://notebook.ec51.net 笔记本电脑]
[http://zippo.ec51.net Zippo打火机]
[http://projector.ec51.net 投影机]
[http://projector.ec51.net 投影仪]
[http://figer.ec51.net 考勤机]
[http://figer.ec51.net 指纹考勤机]
[http://brank.ec51.net 商标注册]  
[http://brank.ec51.net 美国商标注册]
[http://lawyer.ec51.net 律师]
[http://lawyer.ec51.net 律师事务所]
[http://safety.ec51.net 安防]
[http://safety.ec51.net 监控]
[http://adult.ec51.net 成人用品]
[http://adult.ec51.net 性用品]  
[http://adult.ec51.net 情趣用品]
[http://toy.ec51.net 玩具]
[http://toy.ec51.net 电子玩具]
[http://toy.ec51.net 益智玩具]
[http://toy.ec51.net 毛绒玩具]
[http://toy.ec51.net 填充玩具]
[http://gate.ec51.net 门禁系统]
[http://gate.ec51.net 门禁]
[http://solar.ec51.net 太阳能热水器]
[http://solar.ec51.net 太阳能]
[http://saftey.ec51.net 安防设备]
[http://office.ec51.net 深圳写字楼]
[http://office.ec51.net 写字楼出租]
[http://office.ec51.net 写字楼出售]
[http://washer.ec51.net washer]
[http://padlock.ec51.net padlock]
[http://setm.ec51.com Industrial Lighting Fitting]
[http://binoculars.ec51.com binocular]
[http://qimingkeji.ec51.com photoluminescent pigment]
[http://qimingkeji.ec51.com Luminous Powder]
[http://HANSEN202.ec51.com TEXTILES]
[http://HANSEN202.ec51.com GARMENTS]
[http://szfootball.ec51.com footballs]
[http://szfootball.ec51.com basketballs]
[http://szfootball.ec51.com volleyballs]
[http://sunnywang.ec51.com glasses]
[http://sunnywang.ec51.com stockpile]
[http://sunnywang.ec51.com TV items]
[http://reasonlee.ec51.com lawn mower]
[http://sunrise.ec51.com 胶合板]
[http://sunrise.ec51.com 刨花板]
[http://sunrise.ec51.com 硬质纤维板]
[http://sunrise.ec51.com wood products]
[http://sunrise.ec51.com fireproof products]
[http://sunrise.ec51.com veneer]
[http://sunrise.ec51.com flakeboard]
[http://sunrise.ec51.com fiberboard]
[http://sunrise.ec51.com Aluminum Panel]
[http://sunrise.ec51.com Fiberglass Mesh ]
[http://chinalj.ec51.com chairs]
[http://bead.ec51.com evening dress]
[http://bead.ec51.com prom dress]
[http://bead.ec51.com bridesmaid dress]
[http://chemshine.ec51.com non explosive demolition]
[http://chemshine.ec51.com soundless cracking]
[http://chemshine.ec51.com gelatin]
[http://henryfoo.ec51.com Digital Vidicon]
[http://xmtm.ec51.com dartboard]
[http://xmtm.ec51.com wooden case]
[http://xmtm.ec51.com electronic dartboard]
[http://xmtm.ec51.com dart]
[http://zhh0406.ec51.com silicon metal]
[http://yzgt.ec51.com Fiberglass]
[http://sztyh.ec51.com Bowling equipment]
[http://sztyh.ec51.com Ball Door]
[http://sztyh.ec51.com ball bags]
[http://sztyh.ec51.com Bowling accessory]
[http://sztyh.ec51.com Bowling ball]
[http://sztyh.ec51.com Laser pointer]
[http://sztyh.ec51.com Spotting Finger]
[http://sztyh.ec51.com Spotting Cup]
[http://sztyh.ec51.com Ball Bearing]
[http://sztyh.ec51.com AMF Bowling]
[http://sztyh.ec51.com Brunswick part]
[http://sztyh.ec51.com Belt Double]
[http://sztyh.ec51.com Pin Holder]
[http://realtex.ec51.com GRIPPER HEAD]
[http://realtex.ec51.com NYLON GEAR]
[http://realtex.ec51.com GRIPPER HEAD]
[http://realtex.ec51.com GRIPPER HEAD]
[http://jamezhang.ec51.com sports]
[http://jamezhang.ec51.com gas scooter]
[http://jamezhang.ec51.com electric scoter]
[http://jamezhang.ec51.com pocket bike]
[http://jamezhang.ec51.com dirt bike]
[http://jamezhang.ec51.com mini harley]
[http://jamezhang.ec51.com mini chopper]
[http://jamezhang.ec51.com electric bicycle]
[http://jamezhang.ec51.com garden tools]
[http://jamezhang.ec51.com hardware tools]
[http://dove.ec51.com golf ball]
[http://ttichina.ec51.com pocket bike]
[http://ttichina.ec51.com chopper]
[http://ttichina.ec51.com dirt bike]
[http://ttichina.ec51.com gasoline scooter]
[http://ttichina.ec51.com Electric scooter]
[http://ttichina.ec51.com mini electric scooter]
[http://ttichina.ec51.com electric chariots]
[http://eastgrace.ec51.com kid's garment]
[http://eastgrace.ec51.com women's shirt]
[http://eastgrace.ec51.com Casual wear]
[http://eastgrace.ec51.com trousers]
[http://eastgrace.ec51.com sportswear]
[http://eastgrace.ec51.com Kid's Pant]
[http://eastgrace.ec51.com Man's Jacket]
[http://eastgrace.ec51.com Lady's Jacket]
[http://eastgrace.ec51.com Man's Shirt]
[http://eastgrace.ec51.com Lady's Shirt]
[http://eastgrace.ec51.com Lady's bottom]
[http://eastgrace.ec51.com Lady's Sweater]
[http://eastgrace.ec51.com Man's Sweater ]
[http://gjjgzjl.ec51.com Building hoist]
[http://gjjgzjl.ec51.com construction platform]
[http://gjjgzjl.ec51.com suspended platform ]
[http://greattorch.ec51.com consumer electronics]
[http://greattorch.ec51.com cartoon radio]
[http://greattorch.ec51.com flashlight]
[http://greattorch.ec51.com LED lights]
[http://greattorch.ec51.com key chain lights]
[http://greattorch.ec51.com aluminum flashlights]
[http://allproducts.ec51.com security products]
[http://bath-duschy.ec51.com bath products]
[http://bath-duschy.ec51.com shower products]
[http://bath-duschy.ec51.com Shower set]
[http://bath-duschy.ec51.com shower cabin]
[http://bath-duschy.ec51.com Shower panel]
[http://bath-duschy.ec51.com Curtain rails]
[http://bath-duschy.ec51.com bathtub]
[http://bath-duschy.ec51.com Shower mat]
[http://bath-duschy.ec51.com Shower curtain]
[http://bath-duschy.ec51.com glass basin]
[http://bath-duschy.ec51.com grab rail]
[http://bowei.ec51.com wiring accessories]
[http://bowei.ec51.com cable gland]
[http://bowei.ec51.com cable ties]
[http://bowei.ec51.com ducts]
[http://bowei.ec51.com cable clips]
[http://bowei.ec51.com cable clamp]
[http://bowei.ec51.com wire connectors]
[http://bowei.ec51.com bushing]
[http://shininess.ec51.com socket switch]
[http://shininess.ec51.com socket]
[http://shininess.ec51.com Outdoor lighting]
[http://shininess.ec51.com Lighting Bulbs]
[http://shininess.ec51.com transformer]
[http://shininess.ec51.com Circuit Breaker]
[http://shininess.ec51.com Meat Grinder]
[http://shininess.ec51.com extension line]
[http://shininess.ec51.com connector]
[http://shininess.ec51.com Adaptor]
[http://shininess.ec51.com Porcelain Connector]
[http://shininess.ec51.com battery charger]
[http://fujin.ec51.com Solar module]
[http://fujin.ec51.com solar charger]
[http://fujin.ec51.com solar pump]
[http://fujin.ec51.com solar light]
[http://fujin.ec51.com solar fan cap]
[http://fujin.ec51.com emergency charger]
[http://fujin.ec51.com wind-up charger]
[http://fujin.ec51.com wind-up lantern]
[http://PeterHang.ec51.com Electric scooters]
[http://PeterHang.ec51.com gas scooters]
[http://PeterHang.ec51.com electric motorcycles]
[http://PeterHang.ec51.com electric bikes]
[http://PeterHang.ec51.com pocket scooters]
[http://PeterHang.ec51.com ATV scooters]
[http://Micro.ec51.com Mobile Phone Accessories parts]
[http://Micro.ec51.com Mobile Phone Accessories]
[http://Micro.ec51.com Mobile Phone parts]
[http://Micro.ec51.com Original Housing]
[http://Micro.ec51.com Original LCD]
[http://Micro.ec51.com mobile phone Antenna]
[http://Micro.ec51.com Buzzer]
[http://Micro.ec51.com Flex Cable]
[http://Micro.ec51.com Keypad]
[http://lynnleng.ec51.com Diamond Tools]
[http://morgancb.ec51.com wader]
[http://morgancb.ec51.com raincoat]
[http://morgancb.ec51.com boots]
[http://morgancb.ec51.com rainsuit]
[http://morgancb.ec51.com poncho]
[http://markckj.ec51.com home accessories]
[http://cntbc.ec51.com Fabric]
[http://gdbasex.ec51.com 地板胶]
[http://gdbasex.ec51.com EVA玩具]
[http://FSQuince.ec51.com Photo frame]
[http://FSQuince.ec51.com Photo album]
[http://FSQuince.ec51.com Gifts box]
[http://admetus.ec51.com lighting glass]
[http://admetus.ec51.com lab glassware]
[http://admetus.ec51.com heat toughened glass]
[http://admetus.ec51.com tempered float glass]
[http://admetus.ec51.com lighting float glass]
[http://admetus.ec51.com Borosilicate glass]
[http://admetus.ec51.com laminate glass]
[http://admetus.ec51.com blown and moulded glass]
[http://huyunbei.ec51.com home supplies]
[http://mtglobal.ec51.com Mini Radio]
[http://mtglobal.ec51.com Hairdryer]
[http://mtglobal.ec51.com Tableware]
[http://mtglobal.ec51.com Watches]
[http://mtglobal.ec51.com driving bell]
[http://mtglobal.ec51.com Torch]
[http://mtglobal.ec51.com LCD watches]
[http://mtglobal.ec51.com calculator key chain]
[http://mtglobal.ec51.com Pedometer]
[http://mtglobal.ec51.com stainless steel fork]
[http://mtglobal.ec51.com shower radio]
[http://aschem.ec51.com DETERGENT PODWER]
[http://yztscl.ec51.com Knitted T-shirts]
[http://craft-st.ec51.com Decorations]
[http://romy.ec51.com jewelry]
[http://yiqing.ec51.com steam cleaner]
[http://winchem.ec51.com glass beads]
[http://winchem.ec51.com titanium dioxide]
[http://winchem.ec51.com iron oxide]
[http://winchem.ec51.com lead oxide]
[http://winchem.ec51.com barium sulphate]
[http://winchem.ec51.com manganous sulphate]
[http://salina.ec51.com outerwear]
[http://zhouxun.ec51.com DVD player]
[http://zhouxun.ec51.com VCD player]
[http://zhouxun.ec51.com VCD discman]
[http://zhouxun.ec51.com amplifiers]
[http://rainton.ec51.com INJECTION PUMPS]
[http://rainton.ec51.com VE pump]
[http://rainton.ec51.com pump element]
[http://rainton.ec51.com delivery valve]
[http://rainton.ec51.com MICA paper]
[http://rainton.ec51.com mica powder]
[http://hmbusiness.ec51.com pharmaceutical machinery]
[http://linuosh.ec51.com crystal glass]
[http://cymotor.ec51.com UNIVERSAL MOTOR]
[http://cccrystal.ec51.com crystal pendant]
[http://aduis.ec51.com 太阳眼镜]
[http://aduis.ec51.com 老花眼镜]
[http://aduis.ec51.com 光学眼镜]
[http://zkl955151.ec51.com shower cabin]
[http://zkl955151.ec51.com bathtub]
[http://zmzhang77.ec51.com 纺织面料]
[http://zmzhang77.ec51.com 真丝面料]
[http://zmzhang77.ec51.com 食用色素]
[http://oceanwd.ec51.com Stationery]
[http://yufeng168.ec51.com 印刷包装]
[http://zytrading.ec51.com light decoration]
[http://Shinestar.ec51.com cookware]
[http://Shinestar.ec51.com Corkscrew]
[http://cnyuanda.ec51.com air purifiers]
[http://sunyard.ec51.com ribbon bow]
[http://hbzili.ec51.com PVC Doormats]
[http://cjwxx.ec51.com chemical]
[http://fine520.ec51.com phytic acid]
[http://cmechubei.ec51.com diesel engine]
[http://SPC_GROUP.ec51.com jointing equipment]
[http://cosmor.ec51.com auto accessories & parts]
[http://Mondorocn.ec51.com home furniture]
[http://jsglass008.ec51.com Galileo Thermometer]
[http://jsglass008.ec51.com Sand Timer]
[http://jsglass008.ec51.com Glass Barometer]
[http://jsglass008.ec51.com GLASS TEA-POT]
[http://goodwin.ec51.com CANDLES]
[http://dan9.ec51.com socks]
[http://harmonygmt.ec51.com Leather Garment]
[http://hongji88.ec51.com ZIPPER&button]
[http://yoingjiang.ec51.com tableware]
[http://duori.ec51.com electromechanical equipment]
[http://newtime01.ec51.com Christmas tree]
[http://wjc922.ec51.com TIRE CLOCK]
[http://powtele.ec51.com PROJECTOR]
[http://xmhny.ec51.com oxygen bar series]
[http://shwztrade.ec51.com Fiberglass products]
[http://weiasdhong.ec51.com Polo T-Shirts]
[http://weiasdhong.ec51.com Sweater]
[http://salebattery.ec51.com Ni-mh batteries]
[http://salebattery.ec51.com Nimh batteries]
[http://salebattery.ec51.com Ni-Cd batteries]
[http://salebattery.ec51.com NiCd batteries]
[http://decomin.ec51.com tower fan]
[http://decomin.ec51.com desk fan]
[http://decomin.ec51.com stand fan]
[http://Hitrade.ec51.com Gifts and decorative items ]
[http://fhsy888.ec51.com steel glass]
[http://fc320.ec51.com 广交会]
[http://Dry Iron Sourcing products]
[http://tcgy.ec51.com WOODEN PHOTO FRAMES]
[http://jsue01.ec51.com camera]
[http://jsue01.ec51.com Digital audio]
[http://jsue01.ec51.com TV card]
[http://kaipengcz.ec51.com spun bond fabric]
[http://hctysyb.ec51.com sodium antimonate]
[http://janet1207.ec51.com oil filter]
[http://swwsd.ec51.com bromic acid natrium]
[http://mikewolf.ec51.com fabrics products]
[http://Anglo-Thai.ec51.com Clothing]
[http://unitrans.ec51.com Ceramic Tile]
[http://tqcj1972.ec51.com steel cutlery]
[http://tqcj1972.ec51.com wood kitchenware]
[http://Shiny.ec51.com Electric Tools]
[http://sdmark.ec51.com PE PO PP]
[http://qiangmin.ec51.com Leather Shoes]
[http://qiangmin.ec51.com Sandals]
[http://qiangmin.ec51.com Sport Shoes]
[http://qiangmin.ec51.com rubber shoes]
[http://zgybsh.ec51.com medicine importers]
[http://zgybsh.ec51.com medicine exporters]
[http://cjacja.ec51.com sweater]
[http://cnscooter.ec51.com Electric Scooter]
[http://kwanwa.ec51.com digital watch]
[http://kwanwa.ec51.com photo frame]
[http://kwanwa.ec51.com voice recorder]
[http://kwanwa.ec51.com FM radio]
[http://kwanwa.ec51.com keychain]
[http://tiane.ec51.com 冷柜]
[http://tiane.ec51.com 冷库]
[http://sintecasia.ec51.com boot shoes]
[http://sintecasia.ec51.com Sandal shoes]
[http://sintecasia.ec51.com Dress shoes]
[http://sintecasia.ec51.com Ladie's shoes]
[http://sunko.ec51.com SPEAKER box]
[http://sunko.ec51.com CAR SPEAKER]
[http://sunko.ec51.com WOOFER]
[http://sunko.ec51.com TWEETER]
[http://sunko.ec51.com subwoofer]
[http://zhongdan.ec51.com Resorcinol]
[http://zhongdan.ec51.com Indigo Powder]
[http://zhongdan.ec51.com Indigo Granule]
[http://walget.ec51.com candle]
[http://walget.ec51.com candle holder]
[http://walget.ec51.com glassware]
[http://walget.ec51.com ceramic ware]
[http://ykstx.ec51.com POCKET BIKE]
[http://ykstx.ec51.com SUPER BIKE]
[http://ykstx.ec51.com MINI BIKE]
[http://yk1107.ec51.com power tools]
[http://sunwayltd.ec51.com plastic]
[http://linksino.ec51.com optic connector]
[http://linksino.ec51.com division machine]
[http://linksino.ec51.com attenuator]
[http://linksino.ec51.com adaptor]
[http://shichangzhou.ec51.com wooden easel]
[http://shichangzhou.ec51.com canvas board]
[http://shichangzhou.ec51.com box palette]
[http://shichangzhou.ec51.com knife block]
[http://shichangzhou.ec51.com spice rack]
[http://shichangzhou.ec51.com wine shelf]
[http://shichangzhou.ec51.com wooden stool]
[http://shichangzhou.ec51.com magazine rack]
[http://shichangzhou.ec51.com grab handle]
[http://shichangzhou.ec51.com wooden stool]
[http://huangzx.ec51.com reflective vest]
[http://checkout.ec51.com Luggage]
[http://checkout.ec51.com Travel Bag]
[http://checkout.ec51.com Trolley Case]
[http://checkout.ec51.com School Bag]
[http://checkout.ec51.com Plush Toys]
[http://checkout.ec51.com Stuffed Toys]
[http://checkout.ec51.com Backpack]
[http://checkout.ec51.com Hand Bag]
[http://checkout.ec51.com Garment Bag]
[http://Johnyuan.ec51.com sport shoes]
[http://Johnyuan.ec51.com leather shoes]
[http://Johnyuan.ec51.com SLIPPERS]
[http://Johnyuan.ec51.com footwear]
[http://Johnyuan.ec51.com running shoes]
[http://Johnyuan.ec51.com basketball shoes]
[http://crystal8098.ec51.com MCB]
[http://crystal8098.ec51.com RCCB]
[http://crystal8098.ec51.com Surge arrestor]
[http://alex.ec51.com Bedspread]
[http://alex.ec51.com Bedspreads]
[http://alex.ec51.com Duvet covers]
[http://alex.ec51.com Cushion covers]
[http://alex.ec51.com Curtains]
[http://risinginstru.ec51.com pressure gauge]
[http://risinginstru.ec51.com thermometer]
[http://risinginstru.ec51.com gas regulator]
[http://risinginstru.ec51.com pressure transmitter]
[http://risinginstru.ec51.com Fire Extinguisher]
[http://risinginstru.ec51.com Cylinder Valve]
[http://risinginstru.ec51.com pressure transmitter]
[http://www.ec51.cn/newsweb 网站推广]
[http://www.ec51.cn/newsweb/gr 网站排名]
[http://www.ec51.cn/newsweb/sr google排名]
[http://www.ec51.cn/newsweb/dzsw 搜索引擎推广]
[http://tomshi.ec51.com 日用品]
[http://tomshi.ec51.com 文具]
[http://tomshi.ec51.com 五金工具]
[http://tomshi.ec51.com yarns]
[http://tomshi.ec51.com women's dress]
[http://tomshi.ec51.com Nylon jacket]
[http://tomshi.ec51.com Long Sleeve]
[http://tomshi.ec51.com Bedding sets]
[http://tomshi.ec51.com synthetic fiber]
[http://tomshi.ec51.com woven fabrics]
[http://tomshi.ec51.com silk sleepwear]
[http://binoculars.ec51.net 望远镜]
[http://binoculars.ec51.net 高倍望远镜]
[http://mailsys.ec51.net 邮件系统]
[http://mailsys.ec51.net Linux邮件系统]
[http://mailsys.ec51.net 企业邮局]
[http://mailsys.ec51.netnewsweb/dzsw 企业邮局]
[http://mailsys.ec51.netnewsweb/gr 校园网]
[http://mailsys.ec51.netnewsweb/ 电子政务]
[http://dart.freewebpage.org dartboard]
[http://stationary.ec51.net 文具]
[http://lighting.ec51.net 灯饰,灯具]
[http://ec.ec51.net 二级管,三极管]
[http://louder.ec51.net 扬声器]
[http://crafts.ec51.net 工艺品]
[http://switch.ec51.net 开关]
[http://charger.ec51.net 电池]
[http://generator.ec51.net 发电机]
[http://wire.ec51.net 电线、电缆]
[http://ic.ec51.net 集成电路]
[http://capacitor.ec51.net 电容器]
[http://transformer.ec51.net 变压器]
[http://linker.ec51.net 连接器]
[http://sensor.ec51.net 传感器]
[http://accumulator.ec51.net 蓄电池]
[http://of.ec51.net 办公家具]
[http://dishware.ec51.net 餐具]
[http://con.ec51.net 建材]
[http://leather.ec51.net 皮革]
[http://sports.ec51.net 体育用品]
[http://camera.ec51.net 数码相机]
[http://camera.ec51.net 数码锁]
[http://camera.ec51.net 数码灯]
[http://camera.ec51.net 数码棒]
[http://dyb.freewebpage.org 注册公司]
[http://www.ec61.com 虚拟主机]
[http://www.ec31.com 网站推广]
[http://wiki.ec51.org EC51 wiki]
[http://shop.ec51.net 网上购物]
[http://mall.ec51.net 网上商城]
[http://buy.ec51.net 网上拍卖]
[http://shop.ec51.net 易趣购物]
[http://mall.ec51.net 易趣商城]
[http://buy.ec51.net 易趣拍卖]
[http://www.kuangye.net 传奇私服]
[http://www.kuangye.net 传奇世界私服]
[http://www.kuangye.net 传奇私服论坛]
[http://www.kuangye.net 传奇私服登陆器]
[http://travel.ec51.net 张家界旅游]
[http://travel.ec51.net 张家界]
[http://www.ec51.comgoogle.htm google排名]
[http://www.ec51.net 供求信息]
[http://www.mornsungifts.com porcelain]
[http://lucyhu.ec51.com cd bag]
[http://fujin.ec51.com solar charger]
[http://cosmor.ec51.com auto accessories]
[http://jsglass008.ec51.com 温度计]
[http://kugo.ec51.com Staples]
[http://kugo.ec51.com Stapler]
[http://kugo.ec51.com stationery]
[http://kugo.ec51.com Electric Sharpener]
[http://kugo.ec51.com Desk sharpener]
[http://kugo.ec51.com Corrector]
[http://kugo.ec51.com Stationery Set]
[http://kugo.ec51.com compasses]
[http://kugo.ec51.com Scissors]
[http://kugo.ec51.com ballpen]
[http://kugo.ec51.com Ruler]
[http://kugo.ec51.com Cutter]
[http://kugo.ec51.com water color]
[http://kugo.ec51.com magnifier]
[http://kugo.ec51.com pencil]
[http://sq-cn.ec51.com gift box]
[http://sq-cn.ec51.com handbag]
[http://sq-cn.ec51.com greeting card]
[http://sq-cn.ec51.com CD case]
[http://sq-cn.ec51.com Wood Boxes]
[http://sq-cn.ec51.com Wooden Box]
[http://sq-cn.ec51.com Wooden Boxes]
[http://fhsy888.ec51.com glass basin]
[http://fhsy888.ec51.com Stainless Steel]
[http://homesourcing.ec51.com PVA MOP]
[http://homesourcing.ec51.com PU]
[http://tcgy.ec51.com MIRROR FRAMES]
[http://janet1207.ec51.com fuel filter]
[http://janet1207.ec51.com air filter]
[http://swwsd.ec51.com SODIUM BROMATE]
[http://swwsd.ec51.com POTASSIUM BROMIDE]
[http://swwsd.ec51.com AMMONIUM BROMIDE]
[http://swwsd.ec51.com CALCIUM BROMIDE]
[http://swwsd.ec51.com ZINC BROMIDE ]
[http://swwsd.ec51.com SODIUM BROMIDE]
[http://swwsd.ec51.com SODIUM BROMATE]
[http://mikewolf.ec51.com fusible interlining fabrics]
[http://mikewolf.ec51.com non-woven fusible interlining]
[http://mikewolf.ec51.com woven fusible interlining]
[http://molina.ec51.com faucet]
[http://molina.ec51.com valve]
[http://molina.ec51.com shower]
[http://molina.ec51.com bathroom]
[http://yhjhzg.ec51.com Candle holders]
[http://yhjhzg.ec51.com electronics scales]
[http://yhjhzg.ec51.com Christmas trees]
[http://yhjhzg.ec51.com decorative desk clocks]
[http://yhjhzg.ec51.com Bathroom sets]
[http://suzyzheng.ec51.com Remote Control toys]
[http://suzyzheng.ec51.com Plastic toys]
[http://suzyzheng.ec51.com innovative toys]
[http://qiangmin.ec51.com Sandals]
[http://qiangmin.ec51.com Sport Shoes]
[http://qiangmin.ec51.com Canvas Rubber Shoes]
[http://consultech.ec51.com polyimide film]
[http://consultech.ec51.com insulating materials]
[http://consultech.ec51.com pet film]
[http://allproducts.ec51.com SAFE BOXES]
[http://allproducts.ec51.com STUFFED toys]
[http://allproducts.ec51.com calbe lock]
[http://allproducts.ec51.com PADLOCK]
[http://allproducts.ec51.com SUITCASE LOCK]
[http://allproducts.ec51.com DOOR CLOSER]
[http://allproducts.ec51.com locks]
[http://allproducts.ec51.com DOOR LOCKS]
[http://topart168.ec51.com oil painting]
[http://allwin.ec51.com S/S SINKS]
[http://allwin.ec51.com pans]
[http://allwin.ec51.com PLIERS]
[http://www.bzyc.com 免费算命]
[http://www.bzyc.com 算命]
[http://www.hnyt.com 免费算命]
[http://www.hnyt.com 算命]
[http://lynnleng.ec51.com diamond Saw Blades]
[http://lynnleng.ec51.com cup wheels]
[http://lynnleng.ec51.com core drills]
[http://lynnleng.ec51.com polishing pads]
[http://www.bjyaguang.com 直流电源]
[http://www.bjyaguang.com 稳压电源]
[http://www.bjyaguang.com 逆变电源]
[http://www.china-wiki.org wiki]
[http://www.exporters-wiki.org exporters]
[http://www.importers-wiki.org importers]
[http://chinalj.ec51.com 礼堂椅]
[http://chinalj.ec51.com 等候椅]
[http://chinalj.ec51.com 课桌椅]
[http://chinalj.ec51.com 餐桌椅]
[http://binoculars.ec51.com 望远镜]
[http://binoculars.ec51.com 夜视仪]
[http://binoculars.ec51.com 光学冷加工]
[http://binoculars.ec51.com Binoculars]
[http://binoculars.ec51.com Night Vision]
[http://binoculars.ec51.com Medical Optical]
[http://binoculars.ec51.com thermal imaging]
[http://binoculars.ec51.com Night Binoculars]
[http://binoculars.ec51.com riflescope]
[http://flowervd.ec51.com Artificial Flower]
[http://flowervd.ec51.com silk flower]
[http://flowervd.ec51.com Artificial Flowers]
[http://flowervd.ec51.com silk flowers]
[http://webcamera.ec51.com web camera]
[http://webcamera.ec51.com security camera]
[http://bjyaguang.ec51.com 稳压电源]
[http://bjyaguang.ec51.com 直流电源]
[http://bjyaguang.ec51.com 逆变电源]
[http://bjyaguang.ec51.com UPS电源]
[http://bjyaguang.ec51.com 电源]
[http://www.digitizing-cn.com embroidery digitizing]
[http://www.digitizing-cn.com embroidery punch]
[http://www.digitizing-cn.com embroidery punching]
[http://www.digitizing-cn.com embroidery design]
[http://embroidery.ec51.com embroidery digitizing]
[http://embroidery.ec51.com embroidery punch]
[http://embroidery.ec51.com embroidery punching]
[http://embroidery.ec51.com embroidery design]
[http://skateboard.ec51.com skateboard]
[http://huipustone.ec51.com Landscape Stone]
[http://huipustone.ec51.com Paving stone]
[http://huipustone.ec51.com step riser]
[http://huipustone.ec51.com Kitchen Countertops]
[http://huipustone.ec51.com roadside stone]
[http://huipustone.ec51.com Bamboo Flooring]
[http://huipustone.ec51.com Marble basins]
[http://huipustone.ec51.com granite basins]
[http://pvcfilm.ec51.com PVC Film]
[http://pvcfilm.ec51.com Oxford cloth]
[http://pvcfilm.ec51.com shower curtain]
[http://pvcfilm.ec51.com tablecloth]
[http://pvcfilm.ec51.com raincoat]
[http://pvcfilm.ec51.com bath-cap]
[http://solventdyes.ec51.com organic pigments]
[http://solventdyes.ec51.com phthalocyanine]
[http://solventdyes.ec51.com chrome yellow]
[http://solventdyes.ec51.com transparent iron oxide]
[http://bodyjewelry.ec51.com body jewelry]
[http://bodyjewelry.ec51.com hair wigs]
[http://bodyjewelry.ec51.com hair ornaments]
[http://bodyjewelry.ec51.com Fashion body jewelry]
[http://cardvdplayer.ec51.com car dvd player]
[http://cardvdplayer.ec51.com Car Power Inverter]
[http://cardvdplayer.ec51.com Car MP3 Player]
[http://cardvdplayer.ec51.com Car CD Player]
[http://cardvdplayer.ec51.com Car Radios]
[http://cardvdplayer.ec51.com Car Radio Cassette Player]
[http://rubberboots.ec51.com rubber boots]
[http://rubberboots.ec51.com Safety Boots]
[http://rubberboots.ec51.com rubber shoes]
[http://rubberboots.ec51.com Safety shoes]
[http://rubberboots.ec51.com Rain boots]
[http://rubberboots.ec51.com rubber overshoe]
[http://rubberboots.ec51.com rubber overshoes]
[http://rubberboots.ec51.com canvans shoes]
[http://rubberboots.ec51.com canvans shoe]
[http://rubberboots.ec51.com canvas boot]
[http://rubberboots.ec51.com rubber overboot]
[http://rubberboots.ec51.com canvas boots]
[http://rubberboots.ec51.com canvas boot]
[http://padlock.ec51.com Wheel Lock]
[http://padlock.ec51.com padlock]
[http://padlock.ec51.com Handle Lock]
[http://padlock.ec51.com Luggage Lock]
[http://padlock.ec51.com Mortise Lock]
[http://padlock.ec51.com Brass Lock]
[http://padlock.ec51.com Fingerprint Lock]
[http://padlock.ec51.com Window Lock]
[http://padlock.ec51.com quantum Lock]
[http://padlock.ec51.com Cord Lock]
[http://jewellery.ec51.com Fashion jewellery]
[http://jewellery.ec51.com Jewellery Rings]
[http://jewellery.ec51.com Beaded Jewelry]
[http://jewellery.ec51.com Silver Jewelry]
[http://jewellery.ec51.com Necklace Set]
[http://jewellery.ec51.com Silver Ring]
[http://lpllighting.ec51.com light bulbs]
[http://lpllighting.ec51.com halogen lamps]
[http://lpllighting.ec51.com Decorative Lighting]
[http://lpllighting.ec51.com high intensity discharge]
[http://lpllighting.ec51.com fluorescent lighting]
[http://lpllighting.ec51.com energy saving lamp]
[http://lpllighting.ec51.com Roadway Lighting]
[http://lpllighting.ec51.com Industrial lighting]
[http://resinhand.ec51.com Fertilizer Pesticides]
[http://resinhand.ec51.com Food Additives]
[http://resinhand.ec51.com Dyestuff]
[http://resinhand.ec51.com Oxytetracycline]
[http://resinhand.ec51.com Gentamycin]
[http://resinhand.ec51.com Carbomer]
[http://resinhand.ec51.com Ambroxol]
[http://resinhand.ec51.com Albendazole]
[http://resinhand.ec51.com Analgin]
[http://www.yunching.com embroidery digitizing]
[http://www.yunching.com embroidery punch]
[http://www.yunching.com embroidery punching]
[http://www.yunching.com embroidery design]
[http://marble.ec51.com marble]
[http://marble.ec51.com granite]
[http://marble.ec51.com sandstone]
[http://marble.ec51.com Ceramic basin]
[http://sanitaryware.ec51.com Sanitary ware]
[http://sanitaryware.ec51.com Sanitary]
[http://sanitaryware.ec51.com automatic faucet]
[http://sanitaryware.ec51.com automatic hand dryer]
[http://sanitaryware.ec51.com automatic urinal flusher]
[http://sanitaryware.ec51.com automatic toilet flusher]
[http://sanitaryware.ec51.com automatic sho]
[http://sanitaryware.ec51.com automatic infrared sensed sanitary]
[http://sdyiwei.ec51.com glass furniture]
[http://sdyiwei.ec51.com office furniture]
[http://sdyiwei.ec51.com Hotel Furniture]
[http://sdyiwei.ec51.com Dining Chair]
[http://sdyiwei.ec51.com Dining Set]
[http://sdyiwei.ec51.com Dining Table]
[http://sdyiwei.ec51.com Coffee Table]
[http://bsgoalpT.ec51.com Access Control]
[http://bsgoalpT.ec51.com magnetic read]
[http://bsgoalpT.ec51.com write head]
[http://bsgoalpT.ec51.com card reader]
[http://bsgoalpT.ec51.com Swipe Reader]
[http://bsgoalpT.ec51.com Pos Machine]
[http://bsgoalpT.ec51.com Card Read Machine]
[http://bsgoalpT.ec51.com Card Write Machine]
[http://bsgoalpT.ec51.com Magnetic Card]
[http://bsgoalpT.ec51.com Magnetic Head]
[http://bsgoalpT.ec51.com Magnetic Card Head]
[http://HisenseOpto.ec51.com Gigabit Ethernet]
[http://HisenseOpto.ec51.com SDH]
[http://HisenseOpto.ec51.com SONET]
[http://HisenseOpto.ec51.com CWDM]
[http://HisenseOpto.ec51.com Fiber channel]
[http://HisenseOpto.ec51.com FTTX]
[http://HisenseOpto.ec51.com fiber optics]
[http://HisenseOpto.ec51.com optical transmission]
[http://HisenseOpto.ec51.com transceiver modules]
[http://HisenseOpto.ec51.com cutting edge optical]
[http://HisenseOpto.ec51.com subassemblies]
[http://szmagnet.ec51.com NdFeB magnet]
[http://szmagnet.ec51.com strong magnet]
[http://szmagnet.ec51.com magnet company]
[http://szmagnet.ec51.com NdFeB]
[http://szmagnet.ec51.com magnet]
[http://szmagnet.ec51.com magnet manufacturers]
[http://szmagnet.ec51.com magnet in China]
[http://dovejiang.ec51.com golf ball]
[http://dovejiang.ec51.com golf golve]
[http://dovejiang.ec51.com golf tee]
[http://dovejiang.ec51.com Golf Head]
[http://dovejiang.ec51.com Putter Head]
[http://dovejiang.ec51.com Grip]
[http://dovejiang.ec51.com Golf Bags]
[http://dovejiang.ec51.com Golf Caps]
[http://dovejiang.ec51.com Golf Gloves]
[http://dovejiang.ec51.com Golf Umbrella]
[http://dovejiang.ec51.com Golf Carts]
[http://dovejiang.ec51.com yoga accessories]
[http://dove.ec51.com golf golve]
[http://dove.ec51.com golf tee]
[http://dove.ec51.com Golf Head]
[http://dove.ec51.com Putter Head]
[http://dove.ec51.com Grip]
[http://dove.ec51.com Golf Bags]
[http://dove.ec51.com Golf Caps]
[http://dove.ec51.com Golf Gloves]
[http://dove.ec51.com Golf Umbrella]
[http://dove.ec51.com Golf Carts]
[http://dove.ec51.com yoga accessories]
[http://angong.ec51.com bottle]
[http://angong.ec51.com chronically]
[http://angong.ec51.com crystal glass]
[http://angong.ec51.com Crystal glass gift]
[http://angong.ec51.com Joint Rod]
[http://angong.ec51.com Casting]
[http://angong.ec51.com Pipe Fitting]
[http://angong.ec51.com Ball Valve]
[http://angong.ec51.com Junction Box]
[http://angong.ec51.com Door Bell]
[http://www.ec51.comindex1.php 外贸]
[http://flashdisk.ec51.com mp3 player]
[http://flashdisk.ec51.com USB flash disk]
[http://flashdisk.ec51.com USB mp3 player]
[http://flashdisk.ec51.com card reader]
[http://flashdisk.ec51.com Digital Cameras]
[http://flashdisk.ec51.com mp3 player]
[http://construction.ec51.com Roll Pin]
[http://construction.ec51.com Gravity Pin]
[http://construction.ec51.com Steel Rolling Tower]
[http://construction.ec51.com construction]
[http://construction.ec51.com Scaffold]
[http://construction.ec51.com Plywood]
[http://construction.ec51.com scaffold baker tower ]
[http://ic-china.ec51.com ic]
[http://ic-china.ec51.com ics]
[http://ic-china.ec51.com china ic]
[http://hengfang.ec51.com Sanitary napkin]
[http://hengfang.ec51.com sanitary pad]
[http://hengfang.ec51.com sanitary towel]
[http://hengfang.ec51.com panty liner]
[http://hengfang.ec51.com panty shield]
[http://Xuchang.ec51.com human hair]
[http://Xuchang.ec51.com Synthetic hair]
[http://Xuchang.ec51.com Hairpieces]
[http://Xuchang.ec51.com wigs]
[http://Xuchang.ec51.com Festival Wigs]
[http://Xuchang.ec51.com Synthetic Hair]
[http://Xuchang.ec51.com Human hair wigs]
[http://yinlong.ec51.com veneers]
[http://yinlong.ec51.com white pin wallboard]
[http://yinlong.ec51.com veneers]
[http://blog.ec51.net china golden suppliers]
[http://www.fadaka.com 名片]
[http://www.fadaka.com 彩色名片]
[http://www.fadaka.com 印刷]
[http://boblibiz.ec51.com clutch disk]
[http://boblibiz.ec51.com clutch cover]
[http://boblibiz.ec51.com brake shoe]
[http://boblibiz.ec51.com brake pad]
[http://boblibiz.ec51.com auto parts]
[http://boblibiz.ec51.com clutch facing]
[http://boblibiz.ec51.com brake lining]
[http://mailsys.ec51.net 企业邮箱]
[http://gsmoon.ec51.com electric scooter]
[http://gsmoon.ec51.com gasoline scooter]
[http://gsmoon.ec51.com electric bicycle]
[http://gsmoon.ec51.com motorcycle]
[http://gsmoon.ec51.com Motor engine]
[http://gsmoon.ec51.com gasoline generator]
[http://gsmoon.ec51.com water pump]
[http://gsmoon.ec51.com lawn mower]
[http://gsmoon.ec51.com brush cutter]
[http://Southern.ec51.com Pull-out Basket]
[http://giftrisky.ec51.com Replica handbags]
[http://giftrisky.ec51.com Coach handbag]
[http://giftrisky.ec51.com Chanel Handbags]
[http://giftrisky.ec51.com Christion Dior handbags]
[http://giftrisky.ec51.com LV shoes]
[http://giftrisky.ec51.com sunglasses]
[http://giftrisky.ec51.com fashion bags]
[http://tent.ec51.com ten]
[http://tent.ec51.com camping tent]
[http://tent.ec51.com canopy]
[http://tent.ec51.com carport]
[http://tent.ec51.com sleeping bag]
[http://tent.ec51.com green house]
[http://tractors.ec51.com tractors]
[http://tractors.ec51.com tractor]
[http://tractors.ec51.com walking tractor]
[http://tractors.ec51.com tractor]
[http://www.beautysilk.net artificial flower]
[http://www.beautysilk.net silk flower]
[http://zzttc.ec51.com enamel]
[http://zzttc.ec51.com bathtub]
[http://zzttc.ec51.com bath tub]
[http://zzttc.ec51.com enamels]
[http://zzttc.ec51.com bathtubs]
[http://sports.ec51.net 体育]
Line 7: Line 882:
For more information about the decorator pattern in general, see:
 * http://wiki.cs.uiuc.edu/patternStories/DecoratorPattern
 * http://en.wikipedia.org/wiki/Decorator_pattern

== What is a Python Decorator ==

The "decorators" we talk about with concern to Python are not exactly the same thing as the DecoratorPattern described above. A Python decorator is a specific change to the Python syntax that allows us to more conveniently alter functions and methods (and possibly classes in a future version). This supports more readable applications of the DecoratorPattern but also other uses as well.

Support for the decorator syntax was proposed for Python in [http://www.python.org/peps/pep-0318.html PEP 318], and will be implemented in Python 2.4.

Note that the current proposal actually only decorates functions (including methods). Extending it to classes or even arbitrary code is possible, but Guido wasn't sure it made sense. (Later versions might become more permissive, but they can't easily snatch functionality back.)

== Debate about decorators in Python ==

The winning syntax as of now uses the '@' symbol, as described in [http://mail.python.org/pipermail/python-dev/2004-June/045516.html this message]. Mark Russell implemented this version. [http://mail.python.org/pipermail/patches/2004-July/015452.html Here] is the message describing the patch he checked in.

There has been a long discussion about the syntax to use for decorators in Python.

== Examples ==

{{{
#!python

@classmethod
def foo (arg1, arg2):
    ....

}}}

See PythonDecoratorLibrary for more complex and real-world examples. See also MixIns and MetaClasses for related resources.

== Current Python Decorator Proposals ==

See [#head-f22ccf491766760d15b371b8ed27c8a81b7cde2f section 6] for a categorization of different proposals; this section just provides concrete examples.

----

'''Decorator Poll''' (consider the poll now closed)

Here is an online poll where you can vote between a few different alternative syntaxes for python decorators: http://wiki.wxpython.org/index.cgi/PythonDecoratorsPoll

'''''A more complete poll is currently running on comp.lang.python, with the unfortunate name
of "Alternate decorator syntax decision", using the options on this WikiPage as the
candidates. Please visit that thread and express your preference!'''''

----

After the @decorator syntax was "accepted", lots of people threw up alarms and a huge series of threads started exploding on Python-dev. Here are the current alternatives that I could find that are being argued, with pros and cons.

I give two examples that might be common uses in the future. Classmethod declarations, and something like static typing (adapters), declaring what type parameters a function expects and returns.

=== A1. pie decorator syntax ===
{{{
@classmethod
def foo(arg1,arg2):
    ...

@accepts(int,int)
@returns(float)
def bar(low,high):
    ...
}}}
 * + Implementation already exists (and is in Python 2.4a2)
 * + Java-like, so not completely unknown to everyone.
 * + Makes the syntax obvious visually (i.e., obviously not a normal statement)
 * + Will not be silently ignored
 * + Compile-time
 * + One decorator per line (makes it clearer to read, write and change order of decorators)
 * + Separate from the def syntax (desired by some for making decoration stand out and keeping def the same)
 * + Currently not used in Python so @decorators can be inserted anywhere, such as after parameters or inside expressions.
 * + All decorators line up in one column immediately above the function name (easy to browse and see what's going on).
 * + The @ special character will make syntax highlighting easier than it would be for normal statements in "magic" locations.
 * - Separate from the def syntax (undesired by some for simple decorators like classmethod/staticmethod)
 * - Ugly?
 * - Introduces a new character in the language
 * - The @ special character is used in IPython and Leo
 * - Punctuation-based syntax raises Perlfears. But no "obvious" keyword or expression has been suggested.
 * - @ is a relatively arbitrary character choice; no intuitive reason why it would indicate a decorator
 * 0 The @ character is often used (in other languages) to mean "attribute". For annotations, this is good. For more active decorators, it may not be so good.
 * - Some people would like the @ character to be available as an overloadable operator - for example, as a binary operator for matrix multiplication (element-by-element and matrix multiplication may be usefully applied to a single object, so there's arguably a need for a new operator rather than simply overriding binary * on a Matrix class).
 * - Because of no indentation, looks confusing when definitions are not separated by empty lines. But adding empty lines makes it hard to determine where the function definition truly starts.
 * - That's the first case in Python where a line following another one with the same identation has a meaning.
 * - Breaks in interactive shell
 * - Comes before the def keyword. Supercedes the function declaration itself, thus applying modifications implicitly to something not yet defined.
 * - @staticmethod may look like staticmethod is not a defined variable, but a compile time option
 * - Requires the programmer to scan an arbitrary distance from the def in *both* directions to see everything of interest (arg, decs, etc.).
 * - Cannot be "folded" by editors as easily, as an arbitrary number of prefix lines should be folded with the body (otherwise, folding becomes less useful).
 * - While the Language Spec does not promise that this character won't be used, neither does it reserve *any* character for user extensions. '@' is one of only three that are available, and another '$' is also likely to get used up by 2.4

FWIW, here is Guido's jumble example in this syntax.
{{{
class C(object):

    @staticmethod
    @funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
               status="experimental", author="BDFL")
    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42):
        """This method blah, blah.

        It supports the following arguments:
        - longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

        blah, blah.

        """
        raise NotYetImplemented
}}}

And here is an example taken from the current test_decorators.py.
This exposes the problem of using two lines together with some
meaning but without identation or vertical whitespace.
{{{
class TestDecorators(unittest.TestCase):

    ...

    def test_dotted(self):
        decorators = MiscDecorators()
        @decorators.author('Cleese')
        def foo(): return 42
        self.assertEqual(foo(), 42)
        self.assertEqual(foo.author, 'Cleese')
}}}

=== A2. pie decorator and space syntax ===
{{{
@ classmethod
def foo(arg1,arg2):
    ...

@ accepts(int,int)
@ returns(float)
def bar(low,high):
    ...
}}}
* 0 This is more readable for some people, less readable for others.


=== B. list-before-def syntax ===
{{{
[classmethod]
def foo(arg1,arg2):
    ...

[accepts(int,int), returns(float)]
def bar(low,high):
    ...
}}}
 * + Implementation already exists
 * + C# like
 * + Can be made backwards compatible-ish, with a "hack"
 * + Doesn't cause breakage in existing code-searching tools
 * + Use visually existing syntax
 * - Doesn't cause breakage in existing code-searching tools
 * - Would not work in interactive mode (list would be interpreted right away)
 * - EuroPython didn't like it ( why? ) (hard to teach newbies about the magic)
 * - The backwards compatability wouldn't be portable to Jython
 * - Looks like a normal expression, but has "magic" behavior of altering a function object
 * - Breaks in interactive shell
 * - Harder to highlight (looks like a normal list)

=== C1. list-after-def syntax ===
{{{
def foo(arg1,arg2) [classmethod]:
    ...

def bar(low,high) [accepts(int,int), returns(float)]:
    ...
}}}
 * + Implementation already exists
 * + Also somewhat C#-like
 * + Was a "community favorite" at one time
 * + Clearly a part of function declaration
 * + Looks ok for simple decorators such as classmethod
 * + Won't break simplistic code analyzers or grep for function def
 * + Use visually existing syntax
 * + Allows one-liner definitions
 * - Long lists of decorators/arguments cause ugly line wraps
 * - Little to distinguish it visually from argument list
 * - or 0 For long argument list, decorators are very far from def. ''I see being too close to def as a minus.''
 * - Guido hates it because it hides crucial information after the signature, it's easy to miss the transition between a long argument list and a long decorator list, and it's cumbersom to cut and paste a decorator list for reuse.
 * - Creates another meaning for []. Since it does so inside the function definition, it will be a distraction for beginners.
 * 0 Brackets are used in other fields to indicate an annotation of some sort (but in Python, it doesn't)

I don't see why longs lists of decorators are an issue with this syntax. Consider the following example:
{{{
def foo(arg1, arg2) [
    complicated(manyArgs=1, notTooUgly='yes'),
    even_more_complicated(42)]:
    ...
}}}
That doesn't look particularly ugly to me.

---

It also isn't very long.

Here is an [http://mail.python.org/pipermail/python-dev/2004-August/047112.html example Guido just sent to python-dev]:
{{{
class C(object):

    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42) [
        staticmethod,
        funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
                  status="experimental", author="BDFL")
        ]:
        """This method blah, blah.

        It supports the following arguments:
        - longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

        blah, blah.

        """
        raise NotYetImplemented
}}}

And he editorializes:

{{{
That's a total jumble of stuff ending with a smiley. (True story: I
left out the colon when typing up this example and only noticed in
proofing.)

Problems with this form:

- it hides crucial information (e.g. that it is a static method)
  after the signature, where it is easily missed

- it's easy to miss the transition between a long argument list and a
  long decorator list

- it's cumbersome to cut and paste a decorator list for reuse, because
  it starts and ends in the middle of a line

Given that the whole point of adding decorator syntax is to move the
decorator from the end ("foo = staticmethod(foo)" after a 100-line
body) to the front, where it is more in-your-face, it should IMO be
moved all the way to the front.
}}}

=== C2. list-after-def syntax with a (pseudo-)keyword ===
{{{
def foo(arg1,arg2) using [classmethod]:
    ...

def bar(low,high) using [accepts(int,int), returns(float)]:
    ...
}}}

This combines C1 with a keyword; it general, it has all the advantages
of either, so I will only list those that are unique to the combination.

 * + Groups the decorators with a list, but explains what they are doing, so the list no longer has a magical new meaning.
 * + Easily extended; No special characters are "used up", and in the future, other pseudo-keywords could be added.
 * + The pseudo-keyword makes it easier to see the separation between the argument tuple and the decorator list.
 * + The pseudo-keyword can act as an implicit line-continuation, which helps with (but does not solve) the midline problem.
 * - Some proponents objected to adding a keyword, because of more typing.
 * 0 Makes the decoration look like a second-class or optional part of the definition. This is true, but may have caused some emotional objection.
 * - There was very little agreement on which word should be used.
 * - No implementation currently exists (it ''may'' be a simple variation of the implementation of C1).

FWIW, here is Guido's jumble example in this syntax.
{{{
class C(object):

    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42) using
        [staticmethod,
         funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
                   status="experimental", author="BDFL")]:
        """This method blah, blah.

        It supports the following arguments:
        - longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

        blah, blah.

        """
        raise NotYetImplemented
}}}
Without the pseudo-keyword acting as line continuation it reads :
{{{
class C(object):

    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42) using [
         staticmethod,
         funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
                   status="experimental", author="BDFL")]:
        """This method blah, blah.

        It supports the following arguments:
        - longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

        blah, blah.

        """
        raise NotYetImplemented
}}}
which feel is more consistent with the rest of python parsing-wise, without decreasing readability...

(See also J4 below, which moves the keyword, and uses "@" signs to make
the decorators stand out more.)


=== C3. tuple-after-def syntax with a (pseudo-)keyword ===
{{{
def foo(arg1,arg2) using classmethod,:
    ...

def bar(low,high) using accepts(int,int), returns(float):
    ...
class C(object):

    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42) using (
         staticmethod,
         funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
                   status="experimental", author="BDFL")):
        """This method blah, blah.

        It supports the following arguments:
        - longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

        blah, blah.

        """
        raise NotYetImplemented
}}}
Very similar to C2, but with those slight differences

 * + Nicer for one-line decoration when using multiple decorators.
 * - The hanging comma feel strange for 1-element tuple, and will probably often been forgotten.
 * - Decorator and arguments looks (too?) similar for multiline case.
 * - No implementation currently exists.

The 1st drawback could be removed if one allows both tuple and single-element after the pseudo-keyword,
trading consistency for readability and convenience.

=== C4. tuple-after-def syntax with a % operator ===

{{{
def foo(arg1,arg2) % classmethod:
    ...

def bar(low,high) % accepts(int,int), returns(float):
    ...
class C(object):

    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42) # make implicit linebreak possible here
         % (staticmethod,
            funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
                      status="experimental", author="BDFL")):
        """This method blah, blah.

        It supports the following arguments:
        - longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

        blah, blah.

        """
        raise NotYetImplemented

# this is also possible for consistency:

foo %= classmethod
bar %= (accepts(int,int), returns(float))

}}}
Very similar to C3, but with those slight differences

 * + Nicer for one-line decoration when using multiple decorators.
 * + Similar to use of % in string formatting operation
 * - Decorator and arguments looks (too?) similar for multiline case.
 * - No implementation currently exists.

One more point: % could also be used in chained fashion:

{{{
bar = bar % accepts(int,int) % returns(float)
}}}

(making it similar to E2 below)



=== D1. list at top of function body syntax ===
{{{
def foo(arg1,arg2):
    [classmethod]
    ...

def bar(low,high):
    [accepts(int,int), returns(float)]
    ...
}}}
 * + Also somewhat C#-like
 * + Consistent with how docstrings are used.
 * + Looks ok for simple or complex decorators
 * + Won't break simplistic code analyzers or grep for function def
 * + Solves line wrap problem with above proposal
 * 0 There is a hack that implements this now [http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/286147 here].
 * - Guido's europython presentation said this didn't win out, but not why
 * - Adds 'magic' behavior to a normal python expression (lists). Not exactly true: there is nothing magic in string when it's used in docstring - it's a normal string in the "magic" place.
 * - Compatibility issue: program that is working under 2.4 will not work properly under earlier versions without any explanation (old syntax compatible decorators will not blow in your face)
 * 0 Perhaps decorators should be allowed before or after the docstring. If you have to choose, I'd choose making it before the docstring.
 * - No implementation currently exists.
 * - Guido ruled out any solution involving special syntax inside the block, because "you shouldn't have to peek inside the block to find out important external properties of the function." [http://mail.python.org/pipermail/python-dev/2004-August/047279.html]
 * - [http://mail.python.org/pipermail/python-dev/2004-August/047289.html Guido rejects], because the function body should reflect what the function does; decorators are "outside" the function, for its callers.

=== D2. 'dot'decorators at top of function body syntax ===
{{{
def bar(low,high):
    .accepts(int,int)
    .returns(float)
    """docstring"""
    pass

def longMethodNameForEffect(longArgumentOne=None,
                            longArgumentTwo=42):
    .staticmethod
    .funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
               status="experimental", author="BDFL")
    """
    asdfasdf
    """
    raise NotYetImplemented
}}}
Advantages/disadvantages of .decorators:

 * + Unambiguous "target" for decorators, matches Python's precedents for indentation and modify-what-came-before

 * + Decorators won't get lost in long argument lists (they are indented differently in Guido's preferred formatting, and are separated by the smiley in the all-args-on-individual-lines formatting)

 * 0 Compatible with some future "with ...:" syntax, as decorators must immediately follow a 'def ...:' (or possibly a 'class ...:'), so if there is a 'with ...:' what follows cannot be a decorator.

 * + Separate from def syntax (to keep def the same avoiding breakage)

 * + No extra cut-and-paste issues, no extra indentation level.

 * + No smileys. (Does that get a :) or a ]: ?)

 * + Will not be silently ignored (doesn't use currently legal syntax)

 * + Simple for simple decorators, supports complex decorators as cleanly as possible

 * + Less ugly (YMMV). Doesn't feel like executable line noise (to 1 out of 1 pythonistas polled...)

 * + No new punctuation or keywords (avoids breaking Leo/IPython/existing code)

 * + Really nice syntax for assigning attributes, if desired (Not sure I like this overloading, but it /looks/ good)

{{{
def func():
    .author = "Kevin Butler"
    pass
}}}

 * +/0 Syntax obvious visually (Someone will complain that the leading period gets lost - that person should switch to a fixed-width font, as used when coding. <.5 wink>) Easy to highlight.

 * 0 Although it is a punctuation-based syntax, it is compatible with existing/proposed '.' usage ('.' can mean subordination to a containing construct like 'with', and passing the implicit "func" argument is analogous to passing "self")

 * 0 Perhaps decorators should be allowed before or after the docstring. If you have to choose, I'd choose making it before the docstring.

 * - Minor extension to use of '.'

 * - Some people may have too much dust on their monitors

 * + Could use {{{.doc()}}} or {{{.doc =}}} or {{{.__doc__ =}}} as a docstring alternative

 * - Guido ruled out any solution involving special syntax inside the block, because "you shouldn't have to peek inside the block to find out important external properties of the function." [http://mail.python.org/pipermail/python-dev/2004-August/047279.html]

 * - [http://mail.python.org/pipermail/python-dev/2004-August/047289.html Guido rejects], because the function body should reflect what the function does; decorators are "outside" the function, for its callers.


=== E1. pie decorator at top of function body syntax ===
{{{
def foo(arg1,arg2):
    @classmethod
    ...

def bar(low,high):
    @accepts(int,int)
    @returns(float)
    ...
}}}
 * Same as above but with pie syntax.
 * Could use @doc too as a docstring alternative
 * - No implementation currently exists.
 * - Guido ruled out any solution involving special syntax inside the block, because "you shouldn't have to peek inside the block to find out important external properties of the function." [http://mail.python.org/pipermail/python-dev/2004-August/047279.html]
 * - [http://mail.python.org/pipermail/python-dev/2004-August/047289.html Guido rejects], because the function body should reflect what the function does; decorators are "outside" the function, for its callers.

=== E2. vbar decorator at top of function body syntax ===
{{{
def foo(arg1,arg2):
    |classmethod
    ...

def bar(low,high):
    |accepts(int,int)
    |returns(float)
    ...

def longMethodNameForEffect(longArgumentOne=None,
                            longArgumentTwo=42):
    |staticmethod
    |funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
               status="experimental", author="BDFL")
    """This method blah, blah.

    It supports the following arguments:
    - longArgumentOne -- a string giving ...
    - longArgumentTwo -- a number giving ...

    blah, blah.

    """

}}}

 * + Consistent with how docstrings are used.
 * + Looks ok for simple or complex decorators
 * + Won't break simplistic code analyzers or grep for function def
 * + Vertical bars visually "attach" the decorators to the name.
 * + Decorators are indented, so it's clear that they modify the function.
 * + Reads naturally as "pipe" operator to unix hackers (which is semantically correct, since the defined function gets passed through the decorators, one at a time, and the result is used.
 * + Doesn't use up one of the currently unused characters (such as "@") -- it's always possible that we'll find another good use for those later.
 * 0 Perhaps decorators should be allowed before or after the docstring. If you have to choose, I'd choose making it before the docstring.
 * - "|" is a relatively arbitrary character choice; no intuitive reason why it would indicate a decorator
 * - Indented decorators look like they should be evaluated when the function is called, not when the function is parsed. I have the same objection to docstrings, though.
 * - Misleading to Unix hackers, since the order of evaluation is "backwards".
 * - For some fonts, "|" looks similar to "I" or "l" or "1". Some think that code highlighting would remove this problem, but with normal-sized fonts, there are not many pixels in it to show a color clearly. "@" has a big blob of pixels, and is very distinct. If proper style uses a space after the "|", the decoration will be a syntax error if I, 1, l (or !) are used.
 * - The key with "|" on it is often in an awkward location on laptop keyboards
 * - No implementation currently exists.
 * - When using just one bar, it isn't noticable enough. It seems more a part of the actual decorator function name than something demarking the function.
 * - When using multiple decorators, the pattern formed by the vertical bars draws the eyes too much and makes it hard to focus on the signature.
 * - Guido ruled out any solution involving special syntax inside the block, because "you shouldn't have to peek inside the block to find out important external properties of the function." [http://mail.python.org/pipermail/python-dev/2004-August/047279.html]
 * - [http://mail.python.org/pipermail/python-dev/2004-August/047289.html Guido rejects], because the function body should reflect what the function does; decorators are "outside" the function, for its callers.

Restyled version:
{{{
def foo(arg1,arg2):
    | classmethod
    ...

def bar(low,high):
    | accepts(int,int)
    | returns(float)
    ...

def longMethodNameForEffect(longArgumentOne=None,
                            longArgumentTwo=42):
    | staticmethod
    | funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
               status="experimental", author="BDFL")
    """This method blah, blah.

    It supports the following arguments:
    - longArgumentOne -- a string giving ...
    - longArgumentTwo -- a number giving ...

    blah, blah.

    """

}}}


=== E3. vbar decorator after arg ===
{{{

def longMethodNameForEffect(longArgumentOne=None,
                            longArgumentTwo=42)
    |staticmethod
    |funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
               status="experimental", author="BDFL"):
    """This method blah, blah.

    It supports the following arguments:
    - longArgumentOne -- a string giving ...
    - longArgumentTwo -- a number giving ...

    blah, blah.

    """

def bar(low,high)
    |accepts(int,int)
    |returns(float):
    ...

def foo(arg1,arg2) | classmethod:
    ...
}}}

An alternative (inspired by a typing error I corrected in E2 in the Guido example) would be to put vbar decorator before the colon...
Basically it has the same characteristic than E2, with the following slight differences:
 * + More obviously attached to function definition
 * + Possible 1-line version as readable as the inline syntax (see F.) for short function/decoration
 * - More difficult to parse? The end-of-statement rules in Python mandate the colon be on the same line as the close of the argument list (less any line continuations); this syntax breaks that rule. Either the rule would have to be changed (yikes!), or line continuations would have to be used.
 * - New syntax having no equivalent in other part of python (but all @ / | propositions suffer from that )
 * - No implementation currently exists.
 * - Guido ruled out any solution involving special syntax inside the block, because "you shouldn't have to peek inside the block to find out important external properties of the function." [http://mail.python.org/pipermail/python-dev/2004-August/047279.html]
 * - [http://mail.python.org/pipermail/python-dev/2004-August/047289.html Guido rejects], because the function body should reflect what the function does; decorators are "outside" the function, for its callers.

=== E4. keyword decorator at top of function body syntax ===
{{{
def foo(arg1,arg2):
    using classmethod
    ...

def bar(low,high):
    using accepts(int,int)
    using returns(float)
    ...

def longMethodNameForEffect(longArgumentOne=None,
                            longArgumentTwo=42):
    using staticmethod
    using funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]",
               status="experimental", author="BDFL")
    """This method blah, blah.

    It supports the following arguments:
    - longArgumentOne -- a string giving ...
    - longArgumentTwo -- a number giving ...

    blah, blah.

    """

}}}

Similar to E1 and E2 but with keyword

=== F. inline syntax ===
{{{
def classmethod foo(arg1,arg2):
    ...

?
}}}
 * + Simple
 * + More readable/natural
 * + Obviousely attached to the function
 * - Does not allow for arguments to the decorator inline, or multiple decorators
 * - The natural place where everyone looks for the function name now is a possible container for other information
 * - Complicates things like colorization and other functions of helper tools
 * - Many people don't like the idea of having something between 'def' and the function name
 * - Breaks etags (couldn't it be fixed?)
 * - No implementation currently exists.

=== F2. inline syntax + new keyword (decodef for example) ===
{{{

decodef doo:
    classmethod
    funcattrs(...)

def [doo] foo(arg1,arg2):
    ...

}}}

 
=== G. as decorator ===
{{{
as classmethod
def foo(arg1,arg2):
    ...

?
}}}
 * + Non-punctuation based
 * + Does not use an existing mechanism with 'magic' behavior
 * - Guido specifically vetos: "as" means "rename" in too many logical, common places that are
 * - No implementation currently exists.

=== H. pie decorator using a different character ===

For example, using the '|' character:

{{{
|classmethod
def foo(arg1,arg2):
    ...

|accepts(int,int)
|returns(float)
def bar(low,high):
    ...
}}}

Same pros and cons as @decorator, but additionally:

 * + Likely to be a trivial change to what is already in 2.4a2.
 * + It doesn't break Leo, IPython, or any other tool that uses @ as a special character.
 * + The association with pipes makes some sense: "take this thing and pass it through that thing to get a modified thing".
 * + Visual association with function also follows from the vertial continuous line that forms, sort of like a flagpole attached to the function and each decorator like a flag.
 * 0 Less 'in-your-face' than @ (some claim it blends in too much, and others, that it's a good thing)
 * - Most characters (including pipe) already have a meaning. Ending an expression at the linebreak will probably keep these from becoming ambiguous, but ... that gets fragile.
 * - Misleading to Unix hackers, since the order of evaluation is "backwards".
 * - For some fonts, "|" looks similar to "I" or "l" or "1" Some think that code highlighting would remove this problem, but with normal-sized fonts, there are not many pixels in it to show a color clearly. "@" has a big blob of pixels, and is very distinct. If proper style uses a space after the "|", the decoration will be a syntax error if I, 1, l (or !) are used.
 * - The key with "|" on it is often in an awkward location on laptop keyboards
 * - When using just one bar, it isn't noticable enough. It seems more a part of the actual decorator function name than something demarking the function.
 * - When using multiple decorators, the pattern formed by the vertical bars draws the eyes too much and makes it hard to focus on the signature.

Restyled version:
{{{
| classmethod
def foo(arg1,arg2):
    ...

| accepts(int,int)
| returns(float)
def bar(low,high):
    ...
}}}

=== I. angle brackets decorator syntax ===
{{{
<classmethod>
def foo(arg1,arg2):
    ...

<accepts(int,int), returns(float)>
def bar(low,high):
    ...
}}}
 * + Same advantages of Pie decorator syntax
 * + Doesn't need a new character
 * - Angle brackets are "unpaired" characters
 * - Parsing of greater-than and less-than becomes more fragile.
 * - No implementation currently exists.

=== J1. new keyword decorator syntax ===
{{{
decorate classmethod:
    def foo(arg1,arg2):
        ...

decorate accepts(int,int), returns(float):
    def bar(low,high):
        ...
}}}
 * + Uses widely known python syntax
 * + Doesn't need extra characters with special meaning
 * + Allows many decorated functions to be declared with a single statement
 * - New keyword
 * - Increases minimum ident level on decorated functions (see following question)
 * - Inconsistent identation level between methods with/without decorators (see following question)
 * - way to much indenting if there are multiple decorators. (see following question)
 * - Determining which decorators apply to a function requires scanning an arbitrarily large amount of code (with real functions and nesting, the decorator can be literally hundreds of lines away from the def).
 * - In practice, functions are likely to each require slightly different decorator sets (''other may argue that most users would only use staticmethod and don't care grouping them''), which means that we either do not group them (in which case, the new indent level doesn't gain us anything), or functions will be heavily and unevenly nested. (See below for an example.)
 * - No implementation currently exists.

Wouldn't be possible to allow both syntaxes?:
{{{
decorate classmethod def foo(arg1, arg2):
   ...

decorate classmethod:
   def foo(arg1, arg2):
}}}

Here's an example of run-away nesting (imagine trying to figure out which decorators apply to baz if these were non-trivial functions) (''answer: but you can do the same with if, and it doesn't mean you have to... The main point of this proposal is to allow one level of indentaton, in which case it is clear, but having the drawback of the indentation. If you find three level of indentation unclear, why write code that way? No other proposition has this "grouping" capacity anyway...'') (''answer answer: The original point was only that they can all be abused, but that this syntax can be abused in a way that is unique, simply '''because''' of the grouping capability.''):

{{{
 decorate static, synchronized:
   decorate returns(None):
     decorate accepts(int):
       def foo(a):
         pass
     decorate accepts(int, int):
       def bar(a, b):
         pass
   decorate accepts(), returns(int):
     def baz():
       return 0
}}}

=== J2. expand the def suite ===
{{{
decorate:
    classmethod
def foo(arg1,arg2):
    ...

using:
    """
    It is now clear the docstring will
    survive the decoration process
    """
    accepts(int,int)
    returns(float)
def bar(low,high):
    ...


}}}

An extensive paper has been written by Robert Brewer: [http://www.aminus.org/rbre/python/pydec.html Optimal Syntax for Python Decorators].
A patch implementing this syntax is available here: [http://www.python.org/sf/1013835].

(I have changed the keyword in the second example to "using", to match the recommendation in Robert's paper. I have left the first example alone, to indicate that the precise choice of keyword is independent of the use of a suite.)

Note that this differs from J5 (and largely from J4) only in whether the function signature stays with the function body, or moves to the top suite. (And in whether the redundant "@" is added for extra readability.)

 * + Uses widely known python syntax, albeit in an unusual way
 * + Reads well and naturally
 * + Doesn't need extra characters with special meaning
 * + Does not use up one of the few remaining "no meaning anywhere" characters.
 * + Docstring can be moved to Guido's favourite place, i.e. before the def suite
 * + Moves decorators, signature and implementation closer together for functions with a long docstring
 * + With the right keyword, e. g. "transform", a new user gets a clear notion of the suite's purpose
 * + Can smoothly be extended to a full-blown suite allowing for {{{if __debug__: trace}}} etc.
 * + Basic implementation has been posted here: [http://mail.python.org/pipermail/python-list/2004-August/233591.html]
 * - Requires new keyword
 * (- No one can agree on the right keyword to use.) The consensus is "using".
 * - Keyword chosen may conflict with how keyword is used in other languages (like "using" in C# or "extends" in Java and other languages).
 * - Keyword may be confused with other keywords in current and future versions of Python (like "with" in ["Python3.0"], which is very similar to "using"). This would suggest choosing a less generic keyword like "decorate", "meta", or "predef".
 * (- Indented decorators put them visually in line with the function name. When indented below the function declaration line this isn't a big deal, but right above the function declaration it can be a problem.) This is so minor that it ought to be ignored.
 * (- Much more typing required than A1 pie syntax the more decorators you have.) But less shifting. (You also have to do more indentation checking.) Any decent editor does this with one keystroke. Try typing the two: {{{
using:
    classmethod
    accepts(int,int)
    returns(float)
def bar(low,high):
    ...

vs.

@classmethod
@accepts(int,int)
@returns(float)
def bar(low,high):
    ...
}}}
 * - Overkill for the simple case like classmethod (''not that much, since "@" can be replaced by "using:" without new line''). (Two extra lines still feels like overkill to me; a line with an internal colon is less overkill, but has its own style problems.)
 * - Many people felt it was wrong use of an identation suite. (''Someone please explain. It looks just like any other pair of blocks in Python, such as if/else or try/finally.'') In current python, an indent either adds a new namespace (this doesn't, it modifies the parent namespace where the def itself appears) or changes flow control. I do think it changes flow control as much as an if or a loop, but others felt strongly that it wasn't the same, and that the equivalence of decorators within a decorate block was different from the equivalence of statements in a function block. For a sample of the response, search the python-dev archives around March 2004. Private email was more adamant.
 * - Has the same problem as option A: in that the decorate block implicitly affects the following def. This does not occur elsewhere in Python. -- Or more precisely, it doesn't occur with an indented block syntax; parentheses can affect execution order. The proposed with: block would do the same thing. ''No, the with block wouldn't affect blocks that come after the with block like this does.''
 * - Same problem as A1 and other proposals, in what order are the decorators applied? C1 is just about the only proposal that doesn't suffer from this problem.
 * - Where will the docstring go? Guido wants the docstring before the function. (He said it would be nice ''if'' it went there, that's all.) Does it '''have''' to be at the beginning of the decorate: indentation block? Or would it '''have''' to be at the end? Or where? What if the function has no decorators, would you have to still use "decorate" followed by an indented docstring? (Not before Python 3000, if ever.)
 * - Technical problems with the current grammar parser if a suite *starts* with an optional part. (Ending with an optional part, such as "else:" is OK, but starting with one is not.) (''Michael Sparks has experimented with the grammar and based on his results it appears *not* an issue.'')
The implementation referenced above does NOT allow a generic suite - but only allows decorators to be listed. The semantics wrt to ordering remains the same as in 2.4a2

(Instead of the word "decorate" it is possible to use some other less lengthy keyword. And even DEF taken uppercase.)

=== J3. two part def suite ===
{{{

def qux:
    """docstring could be here or below. Two strings probable"""
    decor1
    decor2
from arg1, arg2:
    ...

def quux staticmethod from (arg1, arg2): return arg1 + arg2 # possible one-liner (see K)

# which probably is not much needed because of shorter legacy:
quux = staticmethod(lambda arg1, arg2: arg1 + arg2)

# unstylish, but still possible:
def quuux: decor1; decor2
from x, y: return x + y

}}}

Same as J2 but has advantages:

 * + doesn't require new keyword (re-uses "from")
 * + one-liner has special different syntax
 * + reads as natural language: "define quux [with] <these decorators> from <this function>
 * - loses the "definition reflects use"; you can no longer cut and paste from a call to the definition, or vice versa, because the name is not near the arguments.


=== J4 two part def suite with "@" decorators ===

(Note: the missing colon is *intentional*. See J5 for version with colon.)

{{{
   def func(self, arg1)
       @staticmethod
       @grammarrule('statement : expression')
       @version("Added in 2.4")
   as:
       """Docstring could be here, or in decorator part above"""
       # body goes here
}}}

Note that this differs from J5 only by the colon. J5 in turn differs from J2 in whether the function signature stays with the function body, or moves to the top suite. (And in whether the redundant "@" is added for extra readability.)

 * + doesn't require new keyword ("as" can be unambiguously parsed in context)
 * + Leverages the visibility of "@" to overcome visibility problems
     of list-after-def syntaxes
 * + Even better definition-reflects-usage than the current method
 * + Adds a well-defined header, but still backwards-compatible, because of the @ leading each line in the header. (So a non-@ line means an old-style definition, rather than a header.)
 * + Gives the option of putting the docstring as the final decorator, so that wrapping decorators don't have to take care to restore it.
 * - Nothing to do with signification of "as" in other languages and Python. (Other words might work, but it isn't clear that any are better. Maybe "from"?)
 * - There is no line-continuating character, and the indentation cannot be enforced. (Not true! It *can* be enforced; the proposed grammar calls for an INDENT/DEDENT pair wrapping the decorators. The actual downside is that it will be the first such required indent that is not preceded by a colon.)
 * + The lack of a colon emphasizes that the following items (decorators) are semantically closer to an inline list than a full-blown suite.
{{{
if (test): # They match the suite, rather than the statements
    stmt1
    stmt2
}}}
 * - Some may argue that the "as" is not necessary and that the syntax is very similar to a in-body syntax. (The unindented "as" is precisely what separates this from the in-body syntax. To me, the difference is startling.)

=== J5 two part def suite with "@" decorators and colon ===

While the missing colon of J4 was intentional, there are good arguments both ways. Since we're listing options, I include this variant of J4.

{{{
   def func(self, arg1):
       @staticmethod
       @grammarrule('statement : expression')
       @version("Added in 2.4")
   as:
       """Docstring could be here, or in decorator part above"""
       # body goes here
}}}

Note that J5 differs from J2 only in whether the function signature stays with the function body, or moves to the top suite. (And in whether the redundant "@" is added for extra readability.)

 * + doesn't require new keyword ("as" can be unambiguously parsed in context)
 * + Leverages the visibility of "@" to overcome visibility problems
     of list-after-def syntaxes
 * + definition-reflects-usage equal to current function definitions.
 * + Adds a well-defined header, but still backwards-compatible, because of the @ leading each line in the header. (So a non-@ line means an old-style definition, rather than a header.)
 * + Gives the option of putting the docstring as the final decorator, so that wrapping decorators don't have to take care to restore it.
 * - Nothing to do with signification of "as" in other languages and Python. (Other words might work, but it isn't clear that any are better. Maybe def: ... from: ?)
 * + Colon/linebreak consistency with the rest of the language.
 * - Some may argue that the "as" is not necessary and that the syntax is very similar to a in-body syntax. (The unindented "as" is precisely what separates this from the in-body syntax. To me, the difference is startling.)

=== K. partitioned syntax syntax ===

 * Use pie-decorator syntax (or some other complex syntax) when arguments
    are to be passed
 * use inline syntax when no arguments are necessary

{{{
def classmethod foo(arg1,arg2):
    ...


}}}

 * + Simple for simple cases, poweful when needed
 * + Obviousely attached to the function
 * - The natural place where everyone looks for the function name now is a possible container for other information
  
     This is debatable. "Natural" will change if this is accepted. The natural
     place to find the fnction name will be after any simple decorators and before
     the argument list.

 * - Complicates things like colorization and other functions of helper tools

     Other syntaxes will need to be colorized too and will thus complicate colorization.
 * - Since both methods are legal, it has all the downsides of either syntax, in terms of what it does to the rest of the language or newbie confusion.
 * - No implementation currently exists.

=== L. Keyword other than as and with before def ===
{{{
using classmethod def foo(arg1,arg2):
    ...

using accepts(int,int)
using returns(float)
def bar(low,high):
    ...

other possible keyword:

predef classmethod
def foo(arg1,arg2):
    ...

predef accepts(int,int)
predef returns(float)
def bar(low,high):
    ...
}}}

 * + Most advantages of @decorators.
 * + No special character
 * + Reads in english well
 * - A lot of the drawback of @decorators
 * - New keyword
 * - No implementation currently exists (''very similar to A1 implementation, no?'').

=== M. Making def an expression / letting it return a value ===
{{{
deco1(deco2(deco3(
    def func(arg1, arg2):
        pass
)))

    deco1(

    def method(self, arg):
        pass
    )
}}}

 * + Puts everything in the right place.
 * + Because of the (), the function definition can be (but does not need to be) indented an extra level, depending on what makes sense.
 * + Familiar from other functions-as-first-class-objects languages, such as LISP.
 * - The delayed close-paren is better than the current format, but still not desirable.
 * - Guido does not want to blur the distinction between statements and expressions.
 * 0 The name would be temporarily bound to the unwrapped function, which changes semantics for some types of wrappers, such as generics and properties.



== Decorator Syntax Breakdown ==
Here's a breakdown of some of the different decisions that have to be made in deciding on a decorator syntax. This is an attempt to consolidate some of the common points from the various examples above.

=== Indicator ===
Proposals differ on how some sort of indicator of "decoratorhood" is use. These include:

 * Keyword
  * + Makes it clear that this is not a normal statement
  * + Will not be silently ignored
  * + Makes syntax highlighting easy
  * 0 Will make the semantics clear -- but may therefore be misleading for some types of decorators. (Can you think of a word that works well with all of classmethod, annotations, adding a transaction capability, registering the function with a generic method, and replacing the function with something else depending on runtime environment? If so, you're partway there.)
  * - New keywords can break existing code
  * ''Some keyword options'':
   * '''A. decorate '''
    * + Not confusable with any current Python keyword
    * + Intuitively associated with decorator semantics
   * '''B. transform'''
    * + Not confusable with any current Python keyword
    * + Clear indication that a function may change its signature and effect, not only its attributes
    * + Avoids confusion with the "decorator pattern" which requires interface conformance
   * '''B1. mutate'''
    * + Not confusable with any current Python keyword
    * + Clear indication that a function may change its signature and effect, not only its attributes
    * + Avoids confusion with the "decorator pattern" which requires interface conformance
   * '''C. predef'''
    * + Not confusable with any current Python keyword
    * + Intuitively associated with function definition semantics
    * 0 Somewhat intuitively associated with decorator semantics
   * '''D. using'''
    * + Not confusable with any current Python keyword
    * 0 Somewhat intuitively associated with decorator semantics
    * - Users of C++ will associate it with namespaces
   * '''E. meta'''
    * + Not confusable with any current Python keyword
    * 0 Associates meta(-classes) with decorators
    * - Suggests (only) metadata, not changes of signature and effect
   * '''F. with'''
    * + Not confusable with any current Python keyword
    * - 'with'-blocks, as proposed, already want this keyword.
   * '''G. as'''
    * - 'as' usually means 'rename'
   * '''H. wrap'''
    * + Not confusable with any current Python keyword
    * + Clear indication of what the actual implementation does - 'wraps' the function with the decorators
        ''(I think this is a -, since it binds the syntax too closely to the actual implementation - PaulMcGuire)''
    * + Avoids confusion with the "decorator pattern" which requires interface conformance
   * '''I. qual'''
    * + Not confusable with any current Python keyword
    * + Evokes "quality" or "qualifier" concepts, but is not limited to either
    * 0 Does not have any meaning itself

 * Symbol
  * + Makes it clear that this is not a normal statement
  * + Will not be silently ignored
  * + Saves keystrokes
  * - Introduces a new character in the language. This either overloads an old character with new meaning, or uses up an increasingly scarce resource. (There are only three unused characters now, and none are reserved to the user.)
  * ''Some symbol options'':
   * '''@'''
    * + Java-like, so not completely unknown.
    * + Not confusable with any current Python symbol
    * + Makes syntax highlighting easy
    * 0 Used in other languages to mean "attribute"
    * - Already used as a special character in IPython and Leo
    * - Not intuitively associated with the decorator semantics
   * '''|'''
    * + Vertical bars visually "attach" the decorators to the name (with a vertical ASCII art line).
    * 0 Reminiscent of Unix "pipe" operations (though order may be "backwards")
    * - Not intuitively associated with the decorator semantics
    * - Gives substantially new meaning to '|', may be confusing for beginners. Adds new obfuscation possibilities depending on line continuations.
    * - For some fonts, "|" looks similar to "I" or "l" or "1".
    * - The key with "|" on it is often in an awkward location on laptop keyboards
    * - Narrow character, may not be obvious enough
   * '''%'''
    * + Already associated in Python with some sort of "application" type semantics.
    * - Not intuitively associated with the decorator semantics

 * Function
  * + Does not require a syntax change
  * - Changes semantics of function calls. (A function call followed by a function definition is not usually assumed to be affecting that definition.)

 * None
  * + With list syntax, C# like, so not completely unknown.
  * - In pre-def and post-def locations, looks like a normal statement, but does not behave like one.
  * - In pre-def and post-def locations, may be silently ignored
  * - In pre-def and post-def locations, may be hard to highlight in an editor.
  * - In pre-def locations, would not work in interactive mode (list would be interpreted right away)
  * - In within-def locations, does not make clear the break between decorators and the rest of the function declaration

=== Location ===
Proposals also differ on exactly where the decorator declaration should be made. These include:

 * Pre-def
  * + Decorators are easy to find
  * + Won't break simplistic code analyzers or grep for function def
  * 0 Not consistent with docstring location
  * - Decorators are not as clearly a part of the function declaration
  * - Following empty lines or comments may separate decorators from function declaration.
  * - May require extra mental "stack space" to process decorators before seeing function name

 * Within-def (i.e. on the same line)
  * + Decorators are clearly part of the function declaration
  * 0 Not consistent with docstring location
  * - Long lists of decorators/arguments cause ugly line wraps
  * - More cumbersome to copy decorator lists because they are in the middle
  * ''Some within-def options'':
   * Before def
    * + Decorators are easy to find
    * - May break simplistic code analyzers or grep for function def
    * - Long lists of decorators hide function names
    * - May require extra mental "stack space" to process decorators before seeing function name
   * Between def and function name
    * - Long lists of decorators hide function names
    * - May break simplistic code analyzers or grep for function def
    * - May require extra mental "stack space" to process decorators before seeing function name
   * Between function name and argument list
    * + Should not require extra mental "stack space" to process decorators (function name has already been seen)
    * - May break simplistic code analyzers or grep for function def
    * - Easy to miss the transition between a long argument list and a long decorator list
    * - Breaks the symmetry between definition and use -- you can no longer just cut and paste the definition to write a call, or vice versa.
    * - Guido has ruled it out, because of the separation between function name and function arguments.
   * Between argument list and colon
    * + Should not require extra mental "stack space" to process decorators (function name has already been seen)
    * + Won't break simplistic code analyzers or grep for function def
    * - Easy to miss the transition between a long argument list and a long decorator list
 * Post-def
  * + Should not require extra mental "stack space" to process decorators (function name has already been seen)
  * + Won't break simplistic code analyzers or grep for function def
  * 0 Consistent with docstring location
  * - Decorators may look like part of the function's code, not its declaration. (That is, they look like they're evaluated when the function is called, not when it is parsed.) This is a problem for decorations that change the signature, like staticmethod.
 * - Guido ruled out any solution involving special syntax inside the block, because "you shouldn't have to peek inside the block to find out important external properties of the function." [http://mail.python.org/pipermail/python-dev/2004-August/047279.html]
 * - [http://mail.python.org/pipermail/python-dev/2004-August/047289.html Guido rejects], because the function body should reflect what the function does; decorators are "outside" the function, for its callers.
  * ''Some post-def options'':
   * Before docstring
   * After docstring
    * - Docstring separates decorators from function declaration.

 * After entire definition.
   * + This is what we have now, with the foo=deco(foo) syntax.
   * - This is too far from the front of the definition, which is one reason for the change. Simply eliminating the retyping of the name might actually be bad for long functions, by introducing magic.


=== List Notation ===
Decorator syntax, as described in the PEP, must support the application of multiple decorators. Some proposals on how to support this include:

 * One per line
  * + Easy to add/remove/reorder decorators
  * - Decorators consume more vertical space
 * Commas only
  * + Decorators do not consume much vertical space
  * - Difficult to break across lines
 * As list
  * + Decorators do not have to consume much vertical space
  * + Easy to break across lines
  * - Hard to copy/paste
 * As tuple
  * + Decorators do not have to consume much vertical space
  * + Easy to break across lines
  * 0 Allows short one-liners using X, tuple syntax
  * - May look too much like argument list
  * - Hard to copy/paste
 * Angle brackets
  * + Cannot be confused with any other syntax
  * - Angle brackets are "unpaired" characters
  * - Parsing of greater-than and less-than becomes more fragile.

=== Indentation ===
Proposals also differ on whether or not decorators should introduce a
new block. These include:

 * Indent decorators and def
  * + Allows many decorated functions to be declared with a single statement
  * - Increases minimum ident level on decorated functions
  * - Inconsistent identation level between methods with/without decorators
  * - Can lead to "runaway" nesting
  * - Seems to change flow control or namespace, but doesn't really. [http://mail.python.org/pipermail/python-dev/2004-March/043080.html Phillip J. Eby]
 * Indent decorators only
  * + Makes locating the function definition easy
  * 0 Different semantics from that of other paired, nested blocks (e.g. if/elif/else, try/except, try/finally)
  * - Technical problems if a block *starts* with an optional part? (Someone said yes, someone else said that they tried it and had no problems.)
  * - [http://mail.python.org/pipermail/python-dev/2004-August/047666.html David Eppstein] points out that most indented suites can contain arbitrary code. It isn't clear what should happen if someone uses a statement (does not return a value); should it be run once? Should it cause an error?

 * No indent
  * - Uncommon in Python that one line following another one with the same identation has a meaning like this.

=== Order of Decorators ===
Should decorators be applied in textual order, or in reverse order (as if they were in nested parentheses around the def).

It seems to have been settled that decorators will be applied starting with the one closest to the "def" statement. (This means in-order vs reverse will depend on the eventual location.)

=== Allowable Decorators ===
The eventual decision was that anything should be allowed, but it *will* be called with a single argument (the function object) before the function's name is bound in the enclosing namespace.

Should None be allowed and just not called?
This would allow statements in the decorator suite, and might be useful, but ... it wasn't deemed useful enough for a special case, at least in 2.4

=== Meaning of decorators ===
{{{
@deco1
@deco2(darg1, darg2)
@deco3
def func(arg1, arg2):
    pass
}}}

is equivalent to

{{{
__tempd1 = deco1
__tempd2 = deco2(darg1, darg2)
__tempd3 = deco3
__tempf = lambda arg1, arg2: pass
func = tempd1(tempd2(tempd3(tempf)))
}}}
with the following exceptions:

 * The temporary variarables aren't really created. Those are just placeholders to indicate that the expression is evaluated (hopefully to produce a callable) before the function definition.
 * The function can be any function, not just a lambda expression (which is more restricted).





== Thinking ahead to Python 3 ? ==

[http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&safe=off&selm=Pine.LNX.4.44.0408050856390.31290-100000%40ccc9.wpi.edu&rnum=1 Christopher King] makes the point that we are trying to do too much with decorators: declare class/static methods, describe function metadata, and mangle functions. It might be best to think about what is best for each separately.

How might fully loaded functions look in the future?

Christopher King's example:
{{{
def classmethod foo(self,a,b,c):
    """Returns a+b*c."""
    {accepts: (int,int,int), author: 'Chris King'}

    return a+b*c
}}}

Another possible example (keyword support for staticmethod & classmethod, visual basic-like typing using the "as" keyword for adapters, "with" code blocks):
{{{
def classmethod foo(a as int, b as int, c as list) as list:
    """Returns a+b*c."""

    listcopy = []
    with synchronized(lock):
        listcopy[] = c[]

    return a+b*listcopy
}}}

Here it is with the @ symbol:
{{{
 @author('Chris King')
 @accepts(int,int,list)
 @classmethod
 def foo(self,a,b,c):
     """Returns a+b*c."""

      return a+b*c
}}}

**************Please do not delete,I send this message only one time,in order to introduce some japan website.IF you delete,I will publish every day.***************

I am from JAPAN,I want to introduce some very good JAPAN sites to you ,so you can find something about JAPAN cluture,people.

[http://www.ec51.com importers] [http://www.ec51.com distributors] [http://www.ec51.com buyers] [http://www.ec51.com 供求信息] [http://www.ec51.comsitemap.htm EC51 sitemap] [http://www.58798309dyb.com 公司注册,注册公司] [http://www.ec198.com 网站推广] [http://www.ec198.com 网站排名] [http://www.ec51.cn Google排名] [http://www.ec51.cn 搜索引擎排名] [http://www.ec51.org 网站建设] [http://www.58798309dyb.com 公司注册] [http://www.58798309dyb.com 注册公司] [http://www.58798309dyb.com 上海公司注册] [http://www.58798309dyb.com 海外公司注册] [http://www.ec51.comindex1.php 外贸] [http://glassfurniture.ec51.net glass furniture] [http://officefurniture.ec51.net office furniture] [http://washer.ec51.net washer] [http://padlock.ec51.net padlock] [http://handbag.ec51.net handbags] [http://diamond-saw-blades.ec51.net Diamond Saw Blades] [http://backpack.ec51.net backpack] [http://briefcase.ec51.net briefcase] [http://jewellery.ec51.net jewellery] [http://www.xmtmdart.com Dartboard] [http://www.ec51.cominfo.php 供求信息] [http://www.ec51.comcom.php 公司库] [http://www.ec51.compro.php 产品库] [http://www.ec51.comen/info.php tradeleads] [http://www.ec51.comen/com.php company diretory] [http://www.ec51.comen/pro.php products] [http://www.58798309dyb.comnews.asp?id=188 网络科技公司注册] [http://www.58798309dyb.comnews.asp?id=185 商业贸易公司注册] [http://www.58798309dyb.comnews.asp?id=184 酒店管理公司注册] [http://www.ec51.comen/info.php/ B2B offers] [http://www.ec51.comen/com.php/ china suppliers] [http://www.ec51.comen/pro.php/ china products] [http://www.ec198.com 网站推广] [http://www.ec51.cn 虚拟主机,网站建设] [http://www.ec51.cn/web.htm 网页设计] [http://www.ec51.cn/isp.htm 网站空间] [http://www.ec91.com 网址大全] [http://www.ec91.comchat.htm 聊天] [http://www.ec91.comlove.htm 交友] [http://www.ec51.comwz 网址大全] [http://www.ec91.comprogram.htm 科技] [http://www.ec91.comfcys.htm 房产] [http://www.ec91.comszsm.htm 时装商贸] [http://www.ec91.comzjzz.htm 政府组织] [http://www.ec91.comnav.htm 省会城市] [http://www.ec51.comlink.htm 友情链接] [http://www.ec51.cn 网页设计] [http://www.ec51.org yahoo排名] [http://www.ec91.com 网址精选] [http://www.58798309dyb.com 外贸公司注册] [http://www.58798309dyb.com 上海注册公司] [http://www.58798309dyb.com 高科技公司注册] [http://www.58798309dyb.com 美国公司注册]   [http://www.58798309dyb.com 工商注册] [http://www.58798309dyb.com 上海工商注册]   [http://hotel.ec51.net 酒店预订] [http://datahf.ec51.net 数据恢复] [http://ticket.ec51.net 机票] [http://translate.ec51.net 翻译公司] [http://manger.ec51.net 管理咨询] [http://marketing.ec51.net 网络营销] [http://meeting.ec51.net 视频会议] [http://notebook.ec51.net 笔记本电脑] [http://zippo.ec51.net Zippo打火机] [http://projector.ec51.net 投影机] [http://projector.ec51.net 投影仪] [http://figer.ec51.net 考勤机] [http://figer.ec51.net 指纹考勤机] [http://brank.ec51.net 商标注册]   [http://brank.ec51.net 美国商标注册] [http://lawyer.ec51.net 律师] [http://lawyer.ec51.net 律师事务所] [http://safety.ec51.net 安防] [http://safety.ec51.net 监控] [http://adult.ec51.net 成人用品] [http://adult.ec51.net 性用品]   [http://adult.ec51.net 情趣用品] [http://toy.ec51.net 玩具] [http://toy.ec51.net 电子玩具] [http://toy.ec51.net 益智玩具] [http://toy.ec51.net 毛绒玩具] [http://toy.ec51.net 填充玩具] [http://gate.ec51.net 门禁系统] [http://gate.ec51.net 门禁] [http://solar.ec51.net 太阳能热水器] [http://solar.ec51.net 太阳能] [http://saftey.ec51.net 安防设备] [http://office.ec51.net 深圳写字楼] [http://office.ec51.net 写字楼出租] [http://office.ec51.net 写字楼出售] [http://washer.ec51.net washer] [http://padlock.ec51.net padlock] [http://setm.ec51.com Industrial Lighting Fitting] [http://binoculars.ec51.com binocular] [http://qimingkeji.ec51.com photoluminescent pigment] [http://qimingkeji.ec51.com Luminous Powder] [http://HANSEN202.ec51.com TEXTILES] [http://HANSEN202.ec51.com GARMENTS] [http://szfootball.ec51.com footballs] [http://szfootball.ec51.com basketballs] [http://szfootball.ec51.com volleyballs] [http://sunnywang.ec51.com glasses] [http://sunnywang.ec51.com stockpile] [http://sunnywang.ec51.com TV items] [http://reasonlee.ec51.com lawn mower] [http://sunrise.ec51.com 胶合板] [http://sunrise.ec51.com 刨花板] [http://sunrise.ec51.com 硬质纤维板] [http://sunrise.ec51.com wood products] [http://sunrise.ec51.com fireproof products] [http://sunrise.ec51.com veneer] [http://sunrise.ec51.com flakeboard] [http://sunrise.ec51.com fiberboard] [http://sunrise.ec51.com Aluminum Panel] [http://sunrise.ec51.com Fiberglass Mesh ] [http://chinalj.ec51.com chairs] [http://bead.ec51.com evening dress] [http://bead.ec51.com prom dress] [http://bead.ec51.com bridesmaid dress] [http://chemshine.ec51.com non explosive demolition] [http://chemshine.ec51.com soundless cracking] [http://chemshine.ec51.com gelatin] [http://henryfoo.ec51.com Digital Vidicon] [http://xmtm.ec51.com dartboard] [http://xmtm.ec51.com wooden case] [http://xmtm.ec51.com electronic dartboard] [http://xmtm.ec51.com dart] [http://zhh0406.ec51.com silicon metal] [http://yzgt.ec51.com Fiberglass] [http://sztyh.ec51.com Bowling equipment] [http://sztyh.ec51.com Ball Door] [http://sztyh.ec51.com ball bags] [http://sztyh.ec51.com Bowling accessory] [http://sztyh.ec51.com Bowling ball] [http://sztyh.ec51.com Laser pointer] [http://sztyh.ec51.com Spotting Finger] [http://sztyh.ec51.com Spotting Cup] [http://sztyh.ec51.com Ball Bearing] [http://sztyh.ec51.com AMF Bowling] [http://sztyh.ec51.com Brunswick part] [http://sztyh.ec51.com Belt Double] [http://sztyh.ec51.com Pin Holder] [http://realtex.ec51.com GRIPPER HEAD] [http://realtex.ec51.com NYLON GEAR] [http://realtex.ec51.com GRIPPER HEAD] [http://realtex.ec51.com GRIPPER HEAD] [http://jamezhang.ec51.com sports] [http://jamezhang.ec51.com gas scooter] [http://jamezhang.ec51.com electric scoter] [http://jamezhang.ec51.com pocket bike] [http://jamezhang.ec51.com dirt bike] [http://jamezhang.ec51.com mini harley] [http://jamezhang.ec51.com mini chopper] [http://jamezhang.ec51.com electric bicycle] [http://jamezhang.ec51.com garden tools] [http://jamezhang.ec51.com hardware tools] [http://dove.ec51.com golf ball] [http://ttichina.ec51.com pocket bike] [http://ttichina.ec51.com chopper] [http://ttichina.ec51.com dirt bike] [http://ttichina.ec51.com gasoline scooter] [http://ttichina.ec51.com Electric scooter] [http://ttichina.ec51.com mini electric scooter] [http://ttichina.ec51.com electric chariots] [http://eastgrace.ec51.com kid's garment] [http://eastgrace.ec51.com women's shirt] [http://eastgrace.ec51.com Casual wear] [http://eastgrace.ec51.com trousers] [http://eastgrace.ec51.com sportswear] [http://eastgrace.ec51.com Kid's Pant] [http://eastgrace.ec51.com Man's Jacket] [http://eastgrace.ec51.com Lady's Jacket] [http://eastgrace.ec51.com Man's Shirt] [http://eastgrace.ec51.com Lady's Shirt] [http://eastgrace.ec51.com Lady's bottom] [http://eastgrace.ec51.com Lady's Sweater] [http://eastgrace.ec51.com Man's Sweater ] [http://gjjgzjl.ec51.com Building hoist] [http://gjjgzjl.ec51.com construction platform] [http://gjjgzjl.ec51.com suspended platform ] [http://greattorch.ec51.com consumer electronics] [http://greattorch.ec51.com cartoon radio] [http://greattorch.ec51.com flashlight] [http://greattorch.ec51.com LED lights] [http://greattorch.ec51.com key chain lights] [http://greattorch.ec51.com aluminum flashlights] [http://allproducts.ec51.com security products] [http://bath-duschy.ec51.com bath products] [http://bath-duschy.ec51.com shower products] [http://bath-duschy.ec51.com Shower set] [http://bath-duschy.ec51.com shower cabin] [http://bath-duschy.ec51.com Shower panel] [http://bath-duschy.ec51.com Curtain rails] [http://bath-duschy.ec51.com bathtub] [http://bath-duschy.ec51.com Shower mat] [http://bath-duschy.ec51.com Shower curtain] [http://bath-duschy.ec51.com glass basin] [http://bath-duschy.ec51.com grab rail] [http://bowei.ec51.com wiring accessories] [http://bowei.ec51.com cable gland] [http://bowei.ec51.com cable ties] [http://bowei.ec51.com ducts] [http://bowei.ec51.com cable clips] [http://bowei.ec51.com cable clamp] [http://bowei.ec51.com wire connectors] [http://bowei.ec51.com bushing] [http://shininess.ec51.com socket switch] [http://shininess.ec51.com socket] [http://shininess.ec51.com Outdoor lighting] [http://shininess.ec51.com Lighting Bulbs] [http://shininess.ec51.com transformer] [http://shininess.ec51.com Circuit Breaker] [http://shininess.ec51.com Meat Grinder] [http://shininess.ec51.com extension line] [http://shininess.ec51.com connector] [http://shininess.ec51.com Adaptor] [http://shininess.ec51.com Porcelain Connector] [http://shininess.ec51.com battery charger] [http://fujin.ec51.com Solar module] [http://fujin.ec51.com solar charger] [http://fujin.ec51.com solar pump] [http://fujin.ec51.com solar light] [http://fujin.ec51.com solar fan cap] [http://fujin.ec51.com emergency charger] [http://fujin.ec51.com wind-up charger] [http://fujin.ec51.com wind-up lantern] [http://PeterHang.ec51.com Electric scooters] [http://PeterHang.ec51.com gas scooters] [http://PeterHang.ec51.com electric motorcycles] [http://PeterHang.ec51.com electric bikes] [http://PeterHang.ec51.com pocket scooters] [http://PeterHang.ec51.com ATV scooters] [http://Micro.ec51.com Mobile Phone Accessories parts] [http://Micro.ec51.com Mobile Phone Accessories] [http://Micro.ec51.com Mobile Phone parts] [http://Micro.ec51.com Original Housing] [http://Micro.ec51.com Original LCD] [http://Micro.ec51.com mobile phone Antenna] [http://Micro.ec51.com Buzzer] [http://Micro.ec51.com Flex Cable] [http://Micro.ec51.com Keypad] [http://lynnleng.ec51.com Diamond Tools] [http://morgancb.ec51.com wader] [http://morgancb.ec51.com raincoat] [http://morgancb.ec51.com boots] [http://morgancb.ec51.com rainsuit] [http://morgancb.ec51.com poncho] [http://markckj.ec51.com home accessories] [http://cntbc.ec51.com Fabric] [http://gdbasex.ec51.com 地板胶] [http://gdbasex.ec51.com EVA玩具] [http://FSQuince.ec51.com Photo frame] [http://FSQuince.ec51.com Photo album] [http://FSQuince.ec51.com Gifts box] [http://admetus.ec51.com lighting glass] [http://admetus.ec51.com lab glassware] [http://admetus.ec51.com heat toughened glass] [http://admetus.ec51.com tempered float glass] [http://admetus.ec51.com lighting float glass] [http://admetus.ec51.com Borosilicate glass] [http://admetus.ec51.com laminate glass] [http://admetus.ec51.com blown and moulded glass] [http://huyunbei.ec51.com home supplies] [http://mtglobal.ec51.com Mini Radio] [http://mtglobal.ec51.com Hairdryer] [http://mtglobal.ec51.com Tableware] [http://mtglobal.ec51.com Watches] [http://mtglobal.ec51.com driving bell] [http://mtglobal.ec51.com Torch] [http://mtglobal.ec51.com LCD watches] [http://mtglobal.ec51.com calculator key chain] [http://mtglobal.ec51.com Pedometer] [http://mtglobal.ec51.com stainless steel fork] [http://mtglobal.ec51.com shower radio] [http://aschem.ec51.com DETERGENT PODWER] [http://yztscl.ec51.com Knitted T-shirts] [http://craft-st.ec51.com Decorations] [http://romy.ec51.com jewelry] [http://yiqing.ec51.com steam cleaner] [http://winchem.ec51.com glass beads] [http://winchem.ec51.com titanium dioxide] [http://winchem.ec51.com iron oxide] [http://winchem.ec51.com lead oxide] [http://winchem.ec51.com barium sulphate] [http://winchem.ec51.com manganous sulphate] [http://salina.ec51.com outerwear] [http://zhouxun.ec51.com DVD player] [http://zhouxun.ec51.com VCD player] [http://zhouxun.ec51.com VCD discman] [http://zhouxun.ec51.com amplifiers] [http://rainton.ec51.com INJECTION PUMPS] [http://rainton.ec51.com VE pump] [http://rainton.ec51.com pump element] [http://rainton.ec51.com delivery valve] [http://rainton.ec51.com MICA paper] [http://rainton.ec51.com mica powder] [http://hmbusiness.ec51.com pharmaceutical machinery] [http://linuosh.ec51.com crystal glass] [http://cymotor.ec51.com UNIVERSAL MOTOR] [http://cccrystal.ec51.com crystal pendant] [http://aduis.ec51.com 太阳眼镜] [http://aduis.ec51.com 老花眼镜] [http://aduis.ec51.com 光学眼镜] [http://zkl955151.ec51.com shower cabin] [http://zkl955151.ec51.com bathtub] [http://zmzhang77.ec51.com 纺织面料] [http://zmzhang77.ec51.com 真丝面料] [http://zmzhang77.ec51.com 食用色素] [http://oceanwd.ec51.com Stationery] [http://yufeng168.ec51.com 印刷包装] [http://zytrading.ec51.com light decoration] [http://Shinestar.ec51.com cookware] [http://Shinestar.ec51.com Corkscrew] [http://cnyuanda.ec51.com air purifiers] [http://sunyard.ec51.com ribbon bow] [http://hbzili.ec51.com PVC Doormats] [http://cjwxx.ec51.com chemical] [http://fine520.ec51.com phytic acid] [http://cmechubei.ec51.com diesel engine] [http://SPC_GROUP.ec51.com jointing equipment] [http://cosmor.ec51.com auto accessories & parts] [http://Mondorocn.ec51.com home furniture] [http://jsglass008.ec51.com Galileo Thermometer] [http://jsglass008.ec51.com Sand Timer] [http://jsglass008.ec51.com Glass Barometer] [http://jsglass008.ec51.com GLASS TEA-POT] [http://goodwin.ec51.com CANDLES] [http://dan9.ec51.com socks] [http://harmonygmt.ec51.com Leather Garment] [http://hongji88.ec51.com ZIPPER&button] [http://yoingjiang.ec51.com tableware] [http://duori.ec51.com electromechanical equipment] [http://newtime01.ec51.com Christmas tree] [http://wjc922.ec51.com TIRE CLOCK] [http://powtele.ec51.com PROJECTOR] [http://xmhny.ec51.com oxygen bar series] [http://shwztrade.ec51.com Fiberglass products] [http://weiasdhong.ec51.com Polo T-Shirts] [http://weiasdhong.ec51.com Sweater] [http://salebattery.ec51.com Ni-mh batteries] [http://salebattery.ec51.com Nimh batteries] [http://salebattery.ec51.com Ni-Cd batteries] [http://salebattery.ec51.com NiCd batteries] [http://decomin.ec51.com tower fan] [http://decomin.ec51.com desk fan] [http://decomin.ec51.com stand fan] [http://Hitrade.ec51.com Gifts and decorative items ] [http://fhsy888.ec51.com steel glass] [http://fc320.ec51.com 广交会] [http://Dry Iron Sourcing products] [http://tcgy.ec51.com WOODEN PHOTO FRAMES] [http://jsue01.ec51.com camera] [http://jsue01.ec51.com Digital audio] [http://jsue01.ec51.com TV card] [http://kaipengcz.ec51.com spun bond fabric] [http://hctysyb.ec51.com sodium antimonate] [http://janet1207.ec51.com oil filter] [http://swwsd.ec51.com bromic acid natrium] [http://mikewolf.ec51.com fabrics products] [http://Anglo-Thai.ec51.com Clothing] [http://unitrans.ec51.com Ceramic Tile] [http://tqcj1972.ec51.com steel cutlery] [http://tqcj1972.ec51.com wood kitchenware] [http://Shiny.ec51.com Electric Tools] [http://sdmark.ec51.com PE PO PP] [http://qiangmin.ec51.com Leather Shoes] [http://qiangmin.ec51.com Sandals] [http://qiangmin.ec51.com Sport Shoes] [http://qiangmin.ec51.com rubber shoes] [http://zgybsh.ec51.com medicine importers] [http://zgybsh.ec51.com medicine exporters] [http://cjacja.ec51.com sweater] [http://cnscooter.ec51.com Electric Scooter] [http://kwanwa.ec51.com digital watch] [http://kwanwa.ec51.com photo frame] [http://kwanwa.ec51.com voice recorder] [http://kwanwa.ec51.com FM radio] [http://kwanwa.ec51.com keychain] [http://tiane.ec51.com 冷柜] [http://tiane.ec51.com 冷库] [http://sintecasia.ec51.com boot shoes] [http://sintecasia.ec51.com Sandal shoes] [http://sintecasia.ec51.com Dress shoes] [http://sintecasia.ec51.com Ladie's shoes] [http://sunko.ec51.com SPEAKER box] [http://sunko.ec51.com CAR SPEAKER] [http://sunko.ec51.com WOOFER] [http://sunko.ec51.com TWEETER] [http://sunko.ec51.com subwoofer] [http://zhongdan.ec51.com Resorcinol] [http://zhongdan.ec51.com Indigo Powder] [http://zhongdan.ec51.com Indigo Granule] [http://walget.ec51.com candle] [http://walget.ec51.com candle holder] [http://walget.ec51.com glassware] [http://walget.ec51.com ceramic ware] [http://ykstx.ec51.com POCKET BIKE] [http://ykstx.ec51.com SUPER BIKE] [http://ykstx.ec51.com MINI BIKE] [http://yk1107.ec51.com power tools] [http://sunwayltd.ec51.com plastic] [http://linksino.ec51.com optic connector] [http://linksino.ec51.com division machine] [http://linksino.ec51.com attenuator] [http://linksino.ec51.com adaptor] [http://shichangzhou.ec51.com wooden easel] [http://shichangzhou.ec51.com canvas board] [http://shichangzhou.ec51.com box palette] [http://shichangzhou.ec51.com knife block] [http://shichangzhou.ec51.com spice rack] [http://shichangzhou.ec51.com wine shelf] [http://shichangzhou.ec51.com wooden stool] [http://shichangzhou.ec51.com magazine rack] [http://shichangzhou.ec51.com grab handle] [http://shichangzhou.ec51.com wooden stool] [http://huangzx.ec51.com reflective vest] [http://checkout.ec51.com Luggage] [http://checkout.ec51.com Travel Bag] [http://checkout.ec51.com Trolley Case] [http://checkout.ec51.com School Bag] [http://checkout.ec51.com Plush Toys] [http://checkout.ec51.com Stuffed Toys] [http://checkout.ec51.com Backpack] [http://checkout.ec51.com Hand Bag] [http://checkout.ec51.com Garment Bag] [http://Johnyuan.ec51.com sport shoes] [http://Johnyuan.ec51.com leather shoes] [http://Johnyuan.ec51.com SLIPPERS] [http://Johnyuan.ec51.com footwear] [http://Johnyuan.ec51.com running shoes] [http://Johnyuan.ec51.com basketball shoes] [http://crystal8098.ec51.com MCB] [http://crystal8098.ec51.com RCCB] [http://crystal8098.ec51.com Surge arrestor] [http://alex.ec51.com Bedspread] [http://alex.ec51.com Bedspreads] [http://alex.ec51.com Duvet covers] [http://alex.ec51.com Cushion covers] [http://alex.ec51.com Curtains] [http://risinginstru.ec51.com pressure gauge] [http://risinginstru.ec51.com thermometer] [http://risinginstru.ec51.com gas regulator] [http://risinginstru.ec51.com pressure transmitter] [http://risinginstru.ec51.com Fire Extinguisher] [http://risinginstru.ec51.com Cylinder Valve] [http://risinginstru.ec51.com pressure transmitter] [http://www.ec51.cn/newsweb 网站推广] [http://www.ec51.cn/newsweb/gr 网站排名] [http://www.ec51.cn/newsweb/sr google排名] [http://www.ec51.cn/newsweb/dzsw 搜索引擎推广] [http://tomshi.ec51.com 日用品] [http://tomshi.ec51.com 文具] [http://tomshi.ec51.com 五金工具] [http://tomshi.ec51.com yarns] [http://tomshi.ec51.com women's dress] [http://tomshi.ec51.com Nylon jacket] [http://tomshi.ec51.com Long Sleeve] [http://tomshi.ec51.com Bedding sets] [http://tomshi.ec51.com synthetic fiber] [http://tomshi.ec51.com woven fabrics] [http://tomshi.ec51.com silk sleepwear] [http://binoculars.ec51.net 望远镜] [http://binoculars.ec51.net 高倍望远镜] [http://mailsys.ec51.net 邮件系统] [http://mailsys.ec51.net Linux邮件系统] [http://mailsys.ec51.net 企业邮局] [http://mailsys.ec51.netnewsweb/dzsw 企业邮局] [http://mailsys.ec51.netnewsweb/gr 校园网] [http://mailsys.ec51.netnewsweb/ 电子政务] [http://dart.freewebpage.org dartboard] [http://stationary.ec51.net 文具] [http://lighting.ec51.net 灯饰,灯具] [http://ec.ec51.net 二级管,三极管] [http://louder.ec51.net 扬声器] [http://crafts.ec51.net 工艺品] [http://switch.ec51.net 开关] [http://charger.ec51.net 电池] [http://generator.ec51.net 发电机] [http://wire.ec51.net 电线、电缆] [http://ic.ec51.net 集成电路] [http://capacitor.ec51.net 电容器] [http://transformer.ec51.net 变压器] [http://linker.ec51.net 连接器] [http://sensor.ec51.net 传感器] [http://accumulator.ec51.net 蓄电池] [http://of.ec51.net 办公家具] [http://dishware.ec51.net 餐具] [http://con.ec51.net 建材] [http://leather.ec51.net 皮革] [http://sports.ec51.net 体育用品] [http://camera.ec51.net 数码相机] [http://camera.ec51.net 数码锁] [http://camera.ec51.net 数码灯] [http://camera.ec51.net 数码棒] [http://dyb.freewebpage.org 注册公司] [http://www.ec61.com 虚拟主机] [http://www.ec31.com 网站推广] [http://wiki.ec51.org EC51 wiki] [http://shop.ec51.net 网上购物] [http://mall.ec51.net 网上商城] [http://buy.ec51.net 网上拍卖] [http://shop.ec51.net 易趣购物] [http://mall.ec51.net 易趣商城] [http://buy.ec51.net 易趣拍卖] [http://www.kuangye.net 传奇私服] [http://www.kuangye.net 传奇世界私服] [http://www.kuangye.net 传奇私服论坛] [http://www.kuangye.net 传奇私服登陆器] [http://travel.ec51.net 张家界旅游] [http://travel.ec51.net 张家界] [http://www.ec51.comgoogle.htm google排名] [http://www.ec51.net 供求信息] [http://www.mornsungifts.com porcelain] [http://lucyhu.ec51.com cd bag] [http://fujin.ec51.com solar charger] [http://cosmor.ec51.com auto accessories] [http://jsglass008.ec51.com 温度计] [http://kugo.ec51.com Staples] [http://kugo.ec51.com Stapler] [http://kugo.ec51.com stationery] [http://kugo.ec51.com Electric Sharpener] [http://kugo.ec51.com Desk sharpener] [http://kugo.ec51.com Corrector] [http://kugo.ec51.com Stationery Set] [http://kugo.ec51.com compasses] [http://kugo.ec51.com Scissors] [http://kugo.ec51.com ballpen] [http://kugo.ec51.com Ruler] [http://kugo.ec51.com Cutter] [http://kugo.ec51.com water color] [http://kugo.ec51.com magnifier] [http://kugo.ec51.com pencil] [http://sq-cn.ec51.com gift box] [http://sq-cn.ec51.com handbag] [http://sq-cn.ec51.com greeting card] [http://sq-cn.ec51.com CD case] [http://sq-cn.ec51.com Wood Boxes] [http://sq-cn.ec51.com Wooden Box] [http://sq-cn.ec51.com Wooden Boxes] [http://fhsy888.ec51.com glass basin] [http://fhsy888.ec51.com Stainless Steel] [http://homesourcing.ec51.com PVA MOP] [http://homesourcing.ec51.com PU] [http://tcgy.ec51.com MIRROR FRAMES] [http://janet1207.ec51.com fuel filter] [http://janet1207.ec51.com air filter] [http://swwsd.ec51.com SODIUM BROMATE] [http://swwsd.ec51.com POTASSIUM BROMIDE] [http://swwsd.ec51.com AMMONIUM BROMIDE] [http://swwsd.ec51.com CALCIUM BROMIDE] [http://swwsd.ec51.com ZINC BROMIDE ] [http://swwsd.ec51.com SODIUM BROMIDE] [http://swwsd.ec51.com SODIUM BROMATE] [http://mikewolf.ec51.com fusible interlining fabrics] [http://mikewolf.ec51.com non-woven fusible interlining] [http://mikewolf.ec51.com woven fusible interlining] [http://molina.ec51.com faucet] [http://molina.ec51.com valve] [http://molina.ec51.com shower] [http://molina.ec51.com bathroom] [http://yhjhzg.ec51.com Candle holders] [http://yhjhzg.ec51.com electronics scales] [http://yhjhzg.ec51.com Christmas trees] [http://yhjhzg.ec51.com decorative desk clocks] [http://yhjhzg.ec51.com Bathroom sets] [http://suzyzheng.ec51.com Remote Control toys] [http://suzyzheng.ec51.com Plastic toys] [http://suzyzheng.ec51.com innovative toys] [http://qiangmin.ec51.com Sandals] [http://qiangmin.ec51.com Sport Shoes] [http://qiangmin.ec51.com Canvas Rubber Shoes] [http://consultech.ec51.com polyimide film] [http://consultech.ec51.com insulating materials] [http://consultech.ec51.com pet film] [http://allproducts.ec51.com SAFE BOXES] [http://allproducts.ec51.com STUFFED toys] [http://allproducts.ec51.com calbe lock] [http://allproducts.ec51.com PADLOCK] [http://allproducts.ec51.com SUITCASE LOCK] [http://allproducts.ec51.com DOOR CLOSER] [http://allproducts.ec51.com locks] [http://allproducts.ec51.com DOOR LOCKS] [http://topart168.ec51.com oil painting] [http://allwin.ec51.com S/S SINKS] [http://allwin.ec51.com pans] [http://allwin.ec51.com PLIERS] [http://www.bzyc.com 免费算命] [http://www.bzyc.com 算命] [http://www.hnyt.com 免费算命] [http://www.hnyt.com 算命] [http://lynnleng.ec51.com diamond Saw Blades] [http://lynnleng.ec51.com cup wheels] [http://lynnleng.ec51.com core drills] [http://lynnleng.ec51.com polishing pads] [http://www.bjyaguang.com 直流电源] [http://www.bjyaguang.com 稳压电源] [http://www.bjyaguang.com 逆变电源] [http://www.china-wiki.org wiki] [http://www.exporters-wiki.org exporters] [http://www.importers-wiki.org importers] [http://chinalj.ec51.com 礼堂椅] [http://chinalj.ec51.com 等候椅] [http://chinalj.ec51.com 课桌椅] [http://chinalj.ec51.com 餐桌椅] [http://binoculars.ec51.com 望远镜] [http://binoculars.ec51.com 夜视仪] [http://binoculars.ec51.com 光学冷加工] [http://binoculars.ec51.com Binoculars] [http://binoculars.ec51.com Night Vision] [http://binoculars.ec51.com Medical Optical] [http://binoculars.ec51.com thermal imaging] [http://binoculars.ec51.com Night Binoculars] [http://binoculars.ec51.com riflescope] [http://flowervd.ec51.com Artificial Flower] [http://flowervd.ec51.com silk flower] [http://flowervd.ec51.com Artificial Flowers] [http://flowervd.ec51.com silk flowers] [http://webcamera.ec51.com web camera] [http://webcamera.ec51.com security camera] [http://bjyaguang.ec51.com 稳压电源] [http://bjyaguang.ec51.com 直流电源] [http://bjyaguang.ec51.com 逆变电源] [http://bjyaguang.ec51.com UPS电源] [http://bjyaguang.ec51.com 电源] [http://www.digitizing-cn.com embroidery digitizing] [http://www.digitizing-cn.com embroidery punch] [http://www.digitizing-cn.com embroidery punching] [http://www.digitizing-cn.com embroidery design] [http://embroidery.ec51.com embroidery digitizing] [http://embroidery.ec51.com embroidery punch] [http://embroidery.ec51.com embroidery punching] [http://embroidery.ec51.com embroidery design] [http://skateboard.ec51.com skateboard] [http://huipustone.ec51.com Landscape Stone] [http://huipustone.ec51.com Paving stone] [http://huipustone.ec51.com step riser] [http://huipustone.ec51.com Kitchen Countertops] [http://huipustone.ec51.com roadside stone] [http://huipustone.ec51.com Bamboo Flooring] [http://huipustone.ec51.com Marble basins] [http://huipustone.ec51.com granite basins] [http://pvcfilm.ec51.com PVC Film] [http://pvcfilm.ec51.com Oxford cloth] [http://pvcfilm.ec51.com shower curtain] [http://pvcfilm.ec51.com tablecloth] [http://pvcfilm.ec51.com raincoat] [http://pvcfilm.ec51.com bath-cap] [http://solventdyes.ec51.com organic pigments] [http://solventdyes.ec51.com phthalocyanine] [http://solventdyes.ec51.com chrome yellow] [http://solventdyes.ec51.com transparent iron oxide] [http://bodyjewelry.ec51.com body jewelry] [http://bodyjewelry.ec51.com hair wigs] [http://bodyjewelry.ec51.com hair ornaments] [http://bodyjewelry.ec51.com Fashion body jewelry] [http://cardvdplayer.ec51.com car dvd player] [http://cardvdplayer.ec51.com Car Power Inverter] [http://cardvdplayer.ec51.com Car MP3 Player] [http://cardvdplayer.ec51.com Car CD Player] [http://cardvdplayer.ec51.com Car Radios] [http://cardvdplayer.ec51.com Car Radio Cassette Player] [http://rubberboots.ec51.com rubber boots] [http://rubberboots.ec51.com Safety Boots] [http://rubberboots.ec51.com rubber shoes] [http://rubberboots.ec51.com Safety shoes] [http://rubberboots.ec51.com Rain boots] [http://rubberboots.ec51.com rubber overshoe] [http://rubberboots.ec51.com rubber overshoes] [http://rubberboots.ec51.com canvans shoes] [http://rubberboots.ec51.com canvans shoe] [http://rubberboots.ec51.com canvas boot] [http://rubberboots.ec51.com rubber overboot] [http://rubberboots.ec51.com canvas boots] [http://rubberboots.ec51.com canvas boot] [http://padlock.ec51.com Wheel Lock] [http://padlock.ec51.com padlock] [http://padlock.ec51.com Handle Lock] [http://padlock.ec51.com Luggage Lock] [http://padlock.ec51.com Mortise Lock] [http://padlock.ec51.com Brass Lock] [http://padlock.ec51.com Fingerprint Lock] [http://padlock.ec51.com Window Lock] [http://padlock.ec51.com quantum Lock] [http://padlock.ec51.com Cord Lock] [http://jewellery.ec51.com Fashion jewellery] [http://jewellery.ec51.com Jewellery Rings] [http://jewellery.ec51.com Beaded Jewelry] [http://jewellery.ec51.com Silver Jewelry] [http://jewellery.ec51.com Necklace Set] [http://jewellery.ec51.com Silver Ring] [http://lpllighting.ec51.com light bulbs] [http://lpllighting.ec51.com halogen lamps] [http://lpllighting.ec51.com Decorative Lighting] [http://lpllighting.ec51.com high intensity discharge] [http://lpllighting.ec51.com fluorescent lighting] [http://lpllighting.ec51.com energy saving lamp] [http://lpllighting.ec51.com Roadway Lighting] [http://lpllighting.ec51.com Industrial lighting] [http://resinhand.ec51.com Fertilizer Pesticides] [http://resinhand.ec51.com Food Additives] [http://resinhand.ec51.com Dyestuff] [http://resinhand.ec51.com Oxytetracycline] [http://resinhand.ec51.com Gentamycin] [http://resinhand.ec51.com Carbomer] [http://resinhand.ec51.com Ambroxol] [http://resinhand.ec51.com Albendazole] [http://resinhand.ec51.com Analgin] [http://www.yunching.com embroidery digitizing] [http://www.yunching.com embroidery punch] [http://www.yunching.com embroidery punching] [http://www.yunching.com embroidery design] [http://marble.ec51.com marble] [http://marble.ec51.com granite] [http://marble.ec51.com sandstone] [http://marble.ec51.com Ceramic basin] [http://sanitaryware.ec51.com Sanitary ware] [http://sanitaryware.ec51.com Sanitary] [http://sanitaryware.ec51.com automatic faucet] [http://sanitaryware.ec51.com automatic hand dryer] [http://sanitaryware.ec51.com automatic urinal flusher] [http://sanitaryware.ec51.com automatic toilet flusher] [http://sanitaryware.ec51.com automatic sho] [http://sanitaryware.ec51.com automatic infrared sensed sanitary] [http://sdyiwei.ec51.com glass furniture] [http://sdyiwei.ec51.com office furniture] [http://sdyiwei.ec51.com Hotel Furniture] [http://sdyiwei.ec51.com Dining Chair] [http://sdyiwei.ec51.com Dining Set] [http://sdyiwei.ec51.com Dining Table] [http://sdyiwei.ec51.com Coffee Table] [http://bsgoalpT.ec51.com Access Control] [http://bsgoalpT.ec51.com magnetic read] [http://bsgoalpT.ec51.com write head] [http://bsgoalpT.ec51.com card reader] [http://bsgoalpT.ec51.com Swipe Reader] [http://bsgoalpT.ec51.com Pos Machine] [http://bsgoalpT.ec51.com Card Read Machine] [http://bsgoalpT.ec51.com Card Write Machine] [http://bsgoalpT.ec51.com Magnetic Card] [http://bsgoalpT.ec51.com Magnetic Head] [http://bsgoalpT.ec51.com Magnetic Card Head] [http://HisenseOpto.ec51.com Gigabit Ethernet] [http://HisenseOpto.ec51.com SDH] [http://HisenseOpto.ec51.com SONET] [http://HisenseOpto.ec51.com CWDM] [http://HisenseOpto.ec51.com Fiber channel] [http://HisenseOpto.ec51.com FTTX] [http://HisenseOpto.ec51.com fiber optics] [http://HisenseOpto.ec51.com optical transmission] [http://HisenseOpto.ec51.com transceiver modules] [http://HisenseOpto.ec51.com cutting edge optical] [http://HisenseOpto.ec51.com subassemblies] [http://szmagnet.ec51.com NdFeB magnet] [http://szmagnet.ec51.com strong magnet] [http://szmagnet.ec51.com magnet company] [http://szmagnet.ec51.com NdFeB] [http://szmagnet.ec51.com magnet] [http://szmagnet.ec51.com magnet manufacturers] [http://szmagnet.ec51.com magnet in China] [http://dovejiang.ec51.com golf ball] [http://dovejiang.ec51.com golf golve] [http://dovejiang.ec51.com golf tee] [http://dovejiang.ec51.com Golf Head] [http://dovejiang.ec51.com Putter Head] [http://dovejiang.ec51.com Grip] [http://dovejiang.ec51.com Golf Bags] [http://dovejiang.ec51.com Golf Caps] [http://dovejiang.ec51.com Golf Gloves] [http://dovejiang.ec51.com Golf Umbrella] [http://dovejiang.ec51.com Golf Carts] [http://dovejiang.ec51.com yoga accessories] [http://dove.ec51.com golf golve] [http://dove.ec51.com golf tee] [http://dove.ec51.com Golf Head] [http://dove.ec51.com Putter Head] [http://dove.ec51.com Grip] [http://dove.ec51.com Golf Bags] [http://dove.ec51.com Golf Caps] [http://dove.ec51.com Golf Gloves] [http://dove.ec51.com Golf Umbrella] [http://dove.ec51.com Golf Carts] [http://dove.ec51.com yoga accessories] [http://angong.ec51.com bottle] [http://angong.ec51.com chronically] [http://angong.ec51.com crystal glass] [http://angong.ec51.com Crystal glass gift] [http://angong.ec51.com Joint Rod] [http://angong.ec51.com Casting] [http://angong.ec51.com Pipe Fitting] [http://angong.ec51.com Ball Valve] [http://angong.ec51.com Junction Box] [http://angong.ec51.com Door Bell] [http://www.ec51.comindex1.php 外贸] [http://flashdisk.ec51.com mp3 player] [http://flashdisk.ec51.com USB flash disk] [http://flashdisk.ec51.com USB mp3 player] [http://flashdisk.ec51.com card reader] [http://flashdisk.ec51.com Digital Cameras] [http://flashdisk.ec51.com mp3 player] [http://construction.ec51.com Roll Pin] [http://construction.ec51.com Gravity Pin] [http://construction.ec51.com Steel Rolling Tower] [http://construction.ec51.com construction] [http://construction.ec51.com Scaffold] [http://construction.ec51.com Plywood] [http://construction.ec51.com scaffold baker tower ] [http://ic-china.ec51.com ic] [http://ic-china.ec51.com ics] [http://ic-china.ec51.com china ic] [http://hengfang.ec51.com Sanitary napkin] [http://hengfang.ec51.com sanitary pad] [http://hengfang.ec51.com sanitary towel] [http://hengfang.ec51.com panty liner] [http://hengfang.ec51.com panty shield] [http://Xuchang.ec51.com human hair] [http://Xuchang.ec51.com Synthetic hair] [http://Xuchang.ec51.com Hairpieces] [http://Xuchang.ec51.com wigs] [http://Xuchang.ec51.com Festival Wigs] [http://Xuchang.ec51.com Synthetic Hair] [http://Xuchang.ec51.com Human hair wigs] [http://yinlong.ec51.com veneers] [http://yinlong.ec51.com white pin wallboard] [http://yinlong.ec51.com veneers] [http://blog.ec51.net china golden suppliers] [http://www.fadaka.com 名片] [http://www.fadaka.com 彩色名片] [http://www.fadaka.com 印刷] [http://boblibiz.ec51.com clutch disk] [http://boblibiz.ec51.com clutch cover] [http://boblibiz.ec51.com brake shoe] [http://boblibiz.ec51.com brake pad] [http://boblibiz.ec51.com auto parts] [http://boblibiz.ec51.com clutch facing] [http://boblibiz.ec51.com brake lining] [http://mailsys.ec51.net 企业邮箱] [http://gsmoon.ec51.com electric scooter] [http://gsmoon.ec51.com gasoline scooter] [http://gsmoon.ec51.com electric bicycle] [http://gsmoon.ec51.com motorcycle] [http://gsmoon.ec51.com Motor engine] [http://gsmoon.ec51.com gasoline generator] [http://gsmoon.ec51.com water pump] [http://gsmoon.ec51.com lawn mower] [http://gsmoon.ec51.com brush cutter] [http://Southern.ec51.com Pull-out Basket] [http://giftrisky.ec51.com Replica handbags] [http://giftrisky.ec51.com Coach handbag] [http://giftrisky.ec51.com Chanel Handbags] [http://giftrisky.ec51.com Christion Dior handbags] [http://giftrisky.ec51.com LV shoes] [http://giftrisky.ec51.com sunglasses] [http://giftrisky.ec51.com fashion bags] [http://tent.ec51.com ten] [http://tent.ec51.com camping tent] [http://tent.ec51.com canopy] [http://tent.ec51.com carport] [http://tent.ec51.com sleeping bag] [http://tent.ec51.com green house] [http://tractors.ec51.com tractors] [http://tractors.ec51.com tractor] [http://tractors.ec51.com walking tractor] [http://tractors.ec51.com tractor] [http://www.beautysilk.net artificial flower] [http://www.beautysilk.net silk flower] [http://zzttc.ec51.com enamel] [http://zzttc.ec51.com bathtub] [http://zzttc.ec51.com bath tub] [http://zzttc.ec51.com enamels] [http://zzttc.ec51.com bathtubs] [http://sports.ec51.net 体育]

PythonDecorators (last edited 2016-05-20 20:14:18 by FranciscoReyes)

Unable to edit the page? See the FrontPage for instructions.