设置python对象属性不更改值

2024-03-28 18:46:41 发布

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

如果您查看下面的代码,我将创建一个FileNode并将字符串(filename)传递给它。当文件名设置器被触发时,它应该填充其余的字段,但是它似乎不起作用。你知道吗

我目前正在尝试在'filename'setter中测试设置属性'extension',但它似乎没有改变属性,这是为什么?你知道吗

import os
import pprint

class FileNode(object):
    def __init__(self, filename):
        self.filename = filename
        self.show = ""
        self.episode = ""
        self.sequence = ""
        self.shot = ""
        self.task = ""
        self.version = ""
        self.extension = ""
        self.isValid = False

    @property
    def filename(self):
        return self.filename

    @property
    def extension(self):
        return self.extension

    @filename.setter
    def filename(self, value):
        self._filename = value

        fl, ex = os.path.splitext(value)
        self._extension = "candles"

    @extension.setter
    def extension(self, value):
        self._extension = value



a = FileNode("BTMAN_1005_001_007_model_cup_v001.max")
# print (vars(a))
pp = pprint.PrettyPrinter(depth=6)
pp.pprint(vars(a))

b = FileNode("BTMAN_1005_001_007_model_v001.max")
# print (vars(b))
pp = pprint.PrettyPrinter(depth=6)
pp.pprint(vars(b))

Tags: importselfreturn属性valueosdefextension
1条回答
网友
1楼 · 发布于 2024-03-28 18:46:41

您的属性与属性具有相同的名称!你知道吗

尝试对属性使用以单个下划线开头的名称,如中所示

...
def __init__(self, ...):
    ...
    self._extension = ""
    ...
...
@property
def extension(self):
    return self._extension
...

相关问题 更多 >