注册 登录
编程论坛 Python论坛

问一个实例的问题

maclxp 发布于 2010-08-18 10:30, 539 次点击
>>> from UserDict import UserDict
>>> class FileInfo(UserDict):
  "store file metadata"
  def __init__(self, filename=None):
  UserDict.__init__(self)   
  self["name"] = filename
   
>>> a=FileInfo()
>>> a
{'name': None}
>>>  

为什么最后一步,单独敲一个a或者print a出来的是一个字典值,而不是出现它的类型,比如下面的一个例子:
>>> class A:
  def __init__(self, filename=None):
  self={}   
  self["name"] = filename   
>>> b=A()
>>> b
<__main__.A instance at 0x01CCF9E0>

这两个例子中,a和b都是一个类的实例,为什么最后出来的结果不一致?

而且对于第一个例子,有一个父类,对于self.data进行了初始化赋值,然后回到第一个例子中有一句
self["name"] = filename,请问理论上正确的应该是self.data["name"]=filename,为什么这里可以用self["name"]=....

这是父类的Init函数
class UserDict:
  def __init__(self, dict=None, **kwargs):
  self.data = {}
  if dict is not None:
  self.update(dict)
  if len(kwargs):
  self.update(kwargs)
1 回复
#2
外部三电铃2010-08-18 23:54
第一个问题,给你看个例子
>>> class Test:
...     def __repr__(self):
...         return 'haha'
...
>>> t = Test()
>>> t
haha
>>>

第二个问题
self.data["name"]和self["name"]是两个互不相干的属性,两者无任何关系
1