【发布时间】:2018-05-16 21:51:37
【问题描述】:
我是 python 新手(来自 c++ 世界)并且正在尝试使用类方法。我创建了一个没有任何参数的方法(在这种情况下故意避免使用 self 参数)。然后我尝试调用它
class car:
def car_method():
print("Inside Car method")
obj = car_method()
obj.car_method() <---- this creates error: TypeError: car_method() takes 0 positional arguments but 1 was given
我认为这个错误是因为,在 Python 中,每个类方法在调用时总是传递至少一个参数,即该对象的引用。我说的对吗?
然后为了进一步实验,我写了
obj.car_method <----- assuming I am not passing any argument to it
但该函数什么也没打印。
然后我尝试使用它打印它的类型
print(obj.car_method)
导致
bound method car.car_method of <__main__.car object at 0x005D2290>
谁能解释这里发生了什么?我如何“调用” car_method?如果没有办法调用car_method,为什么python让我不带任何参数地定义方法?
我正在努力掌握这里的基础知识。我什至可以将 car_method 称为类方法吗?或者它只是一个类中定义的方法?
【问题讨论】:
-
在写最后一句
Can I even call car_method as a class method? or it is just a method defined inside class?时,我意识到可能是它的行为不同,经过进一步的实验,我意识到,它确实是一个可以在类内部使用但不像@的类方法987654327@。这仍然会出错。但是像car_method()那样调用它就可以了,只要你不在任何其他类方法中使用它!!!!可以作为类属性使用!!
标签: python python-3.x parameter-passing self class-method