用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

指出这段程序的bug 一道编程题

2022-12-10 作者: Python自学举报

[python]代码库

阅读下面的程序,判断其是否可以正常运行,如果可以运行则写出执行结果,如果不能运行则写出理由。

class Test:
def init(self, value):
self.__value = value
@property
def value(self):
return self.__value
t = Test(3)
t.value = 5
print(t.value)

不能
1 类中定义方法时,方法名称前后需要加上两个下划线,表示这是一个类方法,所以初始化方法应该是 __init__,而不是 init。
2 在类方法中访问类的属性时,需要使用 self 关键字,表示这个属性属于这个对象,所以应该是 self.__value,而不是 __value。
3 类的属性通常使用两个下划线作为前缀,表示这个属性是私有属性,不能直接访问。但是在 Python 中,私有属性可以通过对象名._类名__属性名的方式来访问,因此这段代码中 t.value = 5 这行代码会把属性值修改为 5。
4 类中定义的属性是可以直接通过对象名.属性名的方式访问的,但是这段代码中定义了一个名为 value 的方法,并使用了 @property 装饰器,这表示这个方法可以通过属性的方式来访问。因此在执行 t.value = 5 时,会将这个方法视为属性进行赋值,这是不合法的,会导致错误。

修改后

class Test:
    def __init__(self, value):
        self.__value = value

    @property
    def value(self):
        return self.__value


t = Test(3)
print(t.value)


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...