正在尝试使用setter,但遇到以下错误:@versionNum.setter AttributeError:'int'对象没有属性'setter'

2024-10-02 08:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

class Mobile:
    def __init__(self,versionNum, isAndroid, memorysize):
        self.__versionNum = versionNum
        self.__isAndroid = isAndroid
        self.memorySize = memorysize
        self.__appArray = []
        self.used_memory = 0
    
    @versionNum.setter
    def versionNum(self, versionNum):
        self.__versionNum = versionNum
    
    @isAndroid.setter
    def isAndroid(self, bool):
        self.__isAndroid = bool
    
    @memorysize.setter
    def memorysize(self, size):
        self.__memorysize = size

我对Mobile版本使用了proprety setter,但出现了一个错误


Tags: selfsizeinitdefmobileclassusedsetter
1条回答
网友
1楼 · 发布于 2024-10-02 08:25:49

有几个问题:

  1. 你不能没有一个接球手就有一个二传手
  2. 您可能希望避免将__作为前缀(why
  3. self.memorySize既是属性又是属性
  4. 您可能希望避免将bool作为变量名,因为它会隐藏内置的bool
  5. PEP8约定要求属性名称应采用驼峰大小写

请参阅下面的修复程序

class Mobile:
    def __init__(self, version_num, is_android, memory_size):
        self._version_num = version_num
        self._is_android = is_android
        self._memory_size = memory_size
        self._app_array = []
        self.used_memory = 0
    
    @property
    def version_num(self):
        return self._version_num
    
    @version_num.setter
    def version_num(self, version_num):
        self._version_num = version_num
    
    @property
    def is_android(self):
        return self._is_android
    
    @is_android.setter
    def is_android(self, is_android):
        self._is_android = is_android
    
    @property
    def memory_size(self):
        return self._memory_size
    
    @memory_size.setter
    def memory_size(self, size):
        self._memory_size = size

相关问题 更多 >

    热门问题