Python论坛  - 讨论区

标题:[python-chinese] python 有什么比较好的方法实现singleton模式和属性吗?

2007年10月14日 星期日 11:25

pyman577 pyman577在sina.com
星期日 十月 14 11:25:56 HKT 2007

最近在看ruby,ruby实现singleton模式和类的属性都比较简单,比如
class Singleton
  private_class_method :new
  @@instance = nil
  def Singleton.instance
    @@instance = new if ! @@instance
    #or
    #@@instance = new unless @@instance
  end
  def log(msg)
    puts "instance write: #{msg}"
  end
end

类的属性也很简单
class CTest
  @@index = 1
  attr :name,true
  def initialize(name)
    @name = name
  end
只要用attr关键字就可以很容易实现一个class的属性,
我网上搜索了一下,python对应的方法相对比较复杂,有什么简单的方法吗?谢谢
-- 



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

2007年10月14日 星期日 14:19

张沈鹏(电子科大08年本科应届) zsp007在gmail.com
星期日 十月 14 14:19:35 HKT 2007

class C(object):
    def __init__(self): self._x = None
    def getx(self): return self._x
    def setx(self, value): self._x = value
    def delx(self): del self._x
    x = property(getx, setx, delx, "I'm the 'x' property.")


在 07-10-14,pyman577<pyman577 at sina.com> 写道:
> 最近在看ruby,ruby实现singleton模式和类的属性都比较简单,比如
> class Singleton
>   private_class_method :new
>   @@instance = nil
>   def Singleton.instance
>     @@instance = new if ! @@instance
>     #or
>     #@@instance = new unless @@instance
>   end
>   def log(msg)
>     puts "instance write: #{msg}"
>   end
> end
>
> 类的属性也很简单
> class CTest
>   @@index = 1
>   attr :name,true
>   def initialize(name)
>     @name = name
>   end
> 只要用attr关键字就可以很容易实现一个class的属性,
> 我网上搜索了一下,python对应的方法相对比较复杂,有什么简单的方法吗?谢谢
> --
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


-- 
个人网站:http://zsp007.com.cn/
专业:生物医学工程+计算机科学与技术
技能:C++(STL,BOOST) Python(Django) HTML+CSS AJAX
-- 张沈鹏

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

2007年10月14日 星期日 14:24

张沈鹏(电子科大08年本科应届) zsp007在gmail.com
星期日 十月 14 14:24:39 HKT 2007

singleton参见
http://www.chenwy.com/python-iaq-cn.html
http://wiki.woodpecker.org.cn/moin/SingletonPattern

在 07-10-14,张沈鹏(电子科大08年本科应届)<zsp007 at gmail.com> 写道:
> class C(object):
>     def __init__(self): self._x = None
>     def getx(self): return self._x
>     def setx(self, value): self._x = value
>     def delx(self): del self._x
>     x = property(getx, setx, delx, "I'm the 'x' property.")
>
>
> 在 07-10-14,pyman577<pyman577 at sina.com> 写道:
> > 最近在看ruby,ruby实现singleton模式和类的属性都比较简单,比如
> > class Singleton
> >   private_class_method :new
> >   @@instance = nil
> >   def Singleton.instance
> >     @@instance = new if ! @@instance
> >     #or
> >     #@@instance = new unless @@instance
> >   end
> >   def log(msg)
> >     puts "instance write: #{msg}"
> >   end
> > end
> >
> > 类的属性也很简单
> > class CTest
> >   @@index = 1
> >   attr :name,true
> >   def initialize(name)
> >     @name = name
> >   end
> > 只要用attr关键字就可以很容易实现一个class的属性,
> > 我网上搜索了一下,python对应的方法相对比较复杂,有什么简单的方法吗?谢谢
> > --
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
> --
> 个人网站:http://zsp007.com.cn/
> 专业:生物医学工程+计算机科学与技术
> 技能:C++(STL,BOOST) Python(Django) HTML+CSS AJAX
> -- 张沈鹏
>


-- 
个人网站:http://zsp007.com.cn/
专业:生物医学工程+计算机科学与技术
技能:C++(STL,BOOST) Python(Django) HTML+CSS AJAX
-- 张沈鹏

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

2007年10月20日 星期六 08:41

shhgs shhgs.efhilt在gmail.com
星期六 十月 20 08:41:46 HKT 2007

Python in a Nutshell的第五章讲Metaclass的时候给了一个Singleton的实例。抄一下就行了。

注意用法。新的类只要继承这个类,就自动是Singleton的了。

On 10/14/07, 张沈鹏(电子科大08年本科应届) <zsp007在gmail.com> wrote:
> singleton参见
> http://www.chenwy.com/python-iaq-cn.html
> http://wiki.woodpecker.org.cn/moin/SingletonPattern
>
> 在 07-10-14,张沈鹏(电子科大08年本科应届)<zsp007在gmail.com> 写道:
> > class C(object):
> >     def __init__(self): self._x = None
> >     def getx(self): return self._x
> >     def setx(self, value): self._x = value
> >     def delx(self): del self._x
> >     x = property(getx, setx, delx, "I'm the 'x' property.")
> >
> >
> > 在 07-10-14,pyman577<pyman577在sina.com> 写道:
> > > 最近在看ruby,ruby实现singleton模式和类的属性都比较简单,比如
> > > class Singleton
> > >   private_class_method :new
> > >   @@instance = nil
> > >   def Singleton.instance
> > >     @@instance = new if ! @@instance
> > >     #or
> > >     #@@instance = new unless @@instance
> > >   end
> > >   def log(msg)
> > >     puts "instance write: #{msg}"
> > >   end
> > > end
> > >
> > > 类的属性也很简单
> > > class CTest
> > >   @@index = 1
> > >   attr :name,true
> > >   def initialize(name)
> > >     @name = name
> > >   end
> > > 只要用attr关键字就可以很容易实现一个class的属性,
> > > 我网上搜索了一下,python对应的方法相对比较复杂,有什么简单的方法吗?谢谢
> > > --
> > >
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
> > --
> > 个人网站:http://zsp007.com.cn/
> > 专业:生物医学工程+计算机科学与技术
> > 技能:C++(STL,BOOST) Python(Django) HTML+CSS AJAX
> > -- 张沈鹏
> >
>
>
> --
> 个人网站:http://zsp007.com.cn/
> 专业:生物医学工程+计算机科学与技术
> 技能:C++(STL,BOOST) Python(Django) HTML+CSS AJAX
> -- 张沈鹏
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

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

2007年10月20日 星期六 08:53

shhgs shhgs.efhilt在gmail.com
星期六 十月 20 08:53:14 HKT 2007

Python IAQ 是非常好的文档。看Peter Norvig这样的高手点评代码,就像看高手讲棋一样。享受!

On 10/14/07, 张沈鹏(电子科大08年本科应届) <zsp007在gmail.com> wrote:
> singleton参见
> http://www.chenwy.com/python-iaq-cn.html
> http://wiki.woodpecker.org.cn/moin/SingletonPattern
>
> 在 07-10-14,张沈鹏(电子科大08年本科应届)<zsp007在gmail.com> 写道:
> > class C(object):
> >     def __init__(self): self._x = None
> >     def getx(self): return self._x
> >     def setx(self, value): self._x = value
> >     def delx(self): del self._x
> >     x = property(getx, setx, delx, "I'm the 'x' property.")
> >
> >
> > 在 07-10-14,pyman577<pyman577在sina.com> 写道:
> > > 最近在看ruby,ruby实现singleton模式和类的属性都比较简单,比如
> > > class Singleton
> > >   private_class_method :new
> > >   @@instance = nil
> > >   def Singleton.instance
> > >     @@instance = new if ! @@instance
> > >     #or
> > >     #@@instance = new unless @@instance
> > >   end
> > >   def log(msg)
> > >     puts "instance write: #{msg}"
> > >   end
> > > end
> > >
> > > 类的属性也很简单
> > > class CTest
> > >   @@index = 1
> > >   attr :name,true
> > >   def initialize(name)
> > >     @name = name
> > >   end
> > > 只要用attr关键字就可以很容易实现一个class的属性,
> > > 我网上搜索了一下,python对应的方法相对比较复杂,有什么简单的方法吗?谢谢
> > > --
> > >
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
> > --
> > 个人网站:http://zsp007.com.cn/
> > 专业:生物医学工程+计算机科学与技术
> > 技能:C++(STL,BOOST) Python(Django) HTML+CSS AJAX
> > -- 张沈鹏
> >
>
>
> --
> 个人网站:http://zsp007.com.cn/
> 专业:生物医学工程+计算机科学与技术
> 技能:C++(STL,BOOST) Python(Django) HTML+CSS AJAX
> -- 张沈鹏
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号