没有python对象,它看起来很好:
def obj(x={123:'a',456:'b'}):
return x
fb = obj()
print fb
使用python对象时出现以下错误:
def foobar():
def __init__(self,x={123:'a',456:'b'}):
self.x = x
def getStuff(self,field):
return x[field]
fb = foobar()
print fb.x
Traceback (most recent call last):
File "testclass.py", line 9, in <module>
print fb.x
AttributeError: 'NoneType' object has no attribute 'x'
使用python对象,我收到错误:
def foobar():
def __init__(self,x={123:'a',456:'b'}):
self.x = x
def getStuff(self,field):
return x[field]
fb2 = foobar({678:'c'})
print fb2.getStuff(678)
Traceback (most recent call last):
File "testclass.py", line 8, in <module>
fb2 = foobar({678:'c'})
TypeError: foobar() takes no arguments (1 given)
答案 0 :(得分:5)
您没有定义类,您使用嵌套函数定义了一个函数。
def foobar():
def __init__(self,x={123:'a',456:'b'}):
self.x = x
def getStuff(self,field):
return x[field]
使用class
来定义一个类:
class foobar:
def __init__(self,x={123:'a',456:'b'}):
self.x = x
def getStuff(self, field):
return self.x[field]
请注意,您需要参考self.x
中的getStuff()
。
演示:
>>> class foobar:
... def __init__(self,x={123:'a',456:'b'}):
... self.x = x
... def getStuff(self, field):
... return self.x[field]
...
>>> fb = foobar()
>>> print fb.x
{456: 'b', 123: 'a'}
请注意,使用函数关键字参数default的可变值通常不是个好主意。函数参数定义为一次,并且可能导致意外错误,因为现在所有类共享相同的字典。
答案 1 :(得分:1)
在python中定义一个必须使用的类
class classname(parentclass):
def __init__():
<insert code>
使用您的代码,您声明的方法不是类
答案 2 :(得分:1)
使用
class foobar:
而不是
def foobar():