类的函数setRect有参数传入,参数self就是类实例化对象的代称,因此不需要再用global或nonlocal声明其是不是本地对象,因为这俩是类实例化对象的成员变量,不是局部成员,也不是外部变量。
另外,你的程序中定义了length、width,还有self.length和self.width,这两组是不一样的
前者是类变量,属于类的属性,与实例化对象无关,后者是实例变量,会随着不同的类对象而改变。
类变量在任何地方都可以使用,使用方法:类名.变量名,这里就是Rectangle.length
实例变量在类内实例成员函数中使用,self.变量名,在类外使用之前必须现有实例化类对象,类对象.变量名class Rectangle:
length = 5
width = 4
def setRect(self):
print("请输入矩形的长和宽...")
self.length = float(input('长:'))
self.width = float(input('宽:'))
def getRect(self):
print('这个矩形的长是:%.2f,宽是:%.2f' % (self.length, self.width))
def getArea(self):
return self.length * self.width
a=Rectangle()
a.setRect()
print(Rectangle.length)#这个打印出来的是5
print(a.length)#这个打印出来的是调用a.setRect()时,你输入的值
|