我的问题是为什么我无法让类的对象给它一个整数作为参数。它完全忽视了我作为参数传递给它的价值。然而,如果我从类中调用区域函数并将相同数字传递到它的括号中,它将输出所需的结果144.为什么这个类的方法没有这个参数?
从我目前阅读的内容中,我最好的猜测是类函数的方式是编码是不正确的,我希望它会实现。我是否需要将区域函数看作如下参数:self.length
?
# -*- coding: utf-8 -*-
class square:
sides = 4
def __init__(self, length):
self.length = length
def area(self, length):
return length * length
box = square(12)
print(box.area())
输出:TypeError: area() missing 1 required positional argument: 'length'
不应该被保存所赋予它为对象的生活的持续时间值创建的对象?为什么当我告诉它如果打电话看起来像这样再次从area方法打印时会抛出另一个错误?
print(box.area(12))
output:144
print(box.area())
output: <bound method square_shape.area of <__main__.square_shape object at 0x7f5f88355b70>>
我很抱歉,如果这个问题是一个有点古怪的措辞,但我只是在寻找尽可能多的信息,我可以得到,并试图更好地了解我在做什么这里。关于这个问题的其他问题并没有很好地理解我想要弄清楚什么。
所以,如果我的理解正确,那么长度是这个对象的局部变量,我做某事的方式是以某种方式将它视为一个全局变量? – Ragecoder
也许吧?如果你正在考虑它,那么你当前的术语是关闭的。长度是一个实例字段。还有一个长度局部变量。 “局部变量”是指本身的作用域。一旦区域完成并返回一个值,则不再定义作为局部变量的“长度”。但是self.length,只要你处理这个对象的特定实例,实例字段就会保持它的值。 –
你先生是个巧妙的人。你能否评论一下,以自我为参数的功能究竟是如何导致这种巫术的?当它通过自我时,它是否将创建对象时传递的所有参数传递给区域函数? – Ragecoder