Python一切皆对象
class foo:
def su(self,a,b):
return a+b
obj = foo()
print(foo,type(foo)) #<class '__main__.foo'>,<class 'type'>
print(foo()) #<__main__.foo object at 0x000001E67A382D88>
print(obj.su(4,5)) #9
#上下俩种形式可以等到相同的结果
obj =type("foo",(object,),{"su": lambda a, b: a + b })
print(obj,type(obj)) #<class '__main__.foo'>,<class 'type'>,类
print(obj()) #<__main__.foo object at 0x000001702BE029C8>,对象
print(obj.su(4,5)) #9
#上面的一行居然是类调用方法,而下面的通过对象调用方法却报错,我有点迷了
print(obj().su(4,5)) #TypeError: <lambda>() takes 2 positional arguments but 3 were given
我按照一般类的方法想了一会,发现我虽然只传了两个参数,但是报错说我传了三个可能是正常创建类调用方法,类自己会帮着传一个self参数,但是按照type的方式创建的类,需要自己添加self到方法里
obj =type("foo",(object,),{"su": lambda self,a, b: a + b }) #完美解决
obj是foo类的对象,而foo类是type的对象