首页 > 试题广场 >

根据以下代码,下列选项中,说法正确的是() class Re

[单选题]
根据以下代码,下列选项中,说法正确的是()

class Rectangle:

    __count = 0

    def __init__(self,width,height):

        Rectangle.__count += 1

        self.__width = width

        self.__height = height

    @property

    def area(self):

        return self.__height * self.__width

rectangle = Rectangle(200,100)


  • 创建实例对象rectangle后,可在类外使用rectangle.area()来访问area属性

  • area属性为对象的非私有属性,可以访问和修改
  • 变量__count的作用是为了统计创建对象的个数
  • 因为__width和__height为私有变量,所以在类外不可能访问__width和__height属性

@property表示我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。

  • A 我们在使用属性的时候 只需要 rectangle.area即可 后面不需要加括号
  • B 只读不可修改了
  • C __init__每次实例化对象的时候自动调用,所以C正确
  • D python里面没有严格的私有属性,还是可以访问的,rectangle_Rectangle__width访问width属性
    rectangle_Rectangle__height访问height属性

第一次写解析,如果有什么问题还望指出,大家共同进步,冲冲冲!

发表于 2021-12-22 19:37:49 回复(2)
A 使用@property将方法转换为只读属性,只能访问不能修改
rectangle = Rectangle(200,100)
print(rectangle.area)
B 见A
rectangle = Rectangle(200,100)
rectangle.area = 300
print(rectangle.area)

AttributeError: can't set attribute
D python语言私有属性仍然可以访问
print(rectangle._Rectangle__height)
print(rectangle._Rectangle__width)



发表于 2022-03-15 20:09:41 回复(0)
记录
发表于 2022-11-22 21:09:24 回复(0)
使用@property将方法转为属性,该属性为只读属性,只可访问但是不可以修改,使用对象.方法名来访问该属性,但是方法不能再加小括号,故AB选项说法均错误;变量__count是类的私有变量,由于每次创建对象时,其值自增1,所以可以用来统计创建对象的个数,C正确;虽然__height和__width为私有变量,不能在类外直接使用对象名.属性名来访问,但是,仍可以使用rectangle._Rectangle__width和rectangle._Rectangle__height来强制访问,故D错误
发表于 2023-11-01 00:53:19 回复(0)
a.因为@property使得area变为属性,因此调用不要加括号。 b.是只读属性 c.正确,因为init函数里面有自增 d.对象名➕双下划线就可以访问
发表于 2023-07-19 01:21:43 回复(0)
@property将方法转为属性,该属性为只读属性,只可访问但是不可以修改,使用对象.方法名来访问该属性,但是方法不能再加小括号
发表于 2022-11-01 18:05:52 回复(0)
@property 装饰器,创建只读属性
发表于 2022-04-05 20:45:56 回复(0)