Указать свою операционную систему | WINDOWS 10 x 64 |
Указать версию Python | 3.8.0 |
Укажите версию библиотек с которыми работаете |
Код:
|
Вставьте фрагмент кода который у вас имеется на данный момент | Описание вопроса ниже |
Пытаюсь тренироваться и писать в ООП, но немного не понял, что творится с переменными класса.
Вот сам код класса:
Python:
# !/usr/bin/python3
# -*- coding: utf-8 -*-
import os
class CFPP(object):
def __init__(self, path_string):
"""
Инициализация класса
:param path_string: Путь до файла
:type path_string: str
:return: Массив с данными
:rtype: dict
"""
self.ps = path_string
self.arr = ps.split('/')
self.pathFile = os.path.basename(self.ps)
fullname = arr[:-1:]
ext_arr = str(fullname).split('.')
filename = ext_arr[0]
ext = ext_arr[1]
cleanData = {
'path_string': self.ps,
'pathFile': pathFile,
'fullName': fullname,
'fileName': filename,
'fileExt': ext,
}
@property
def pathFile(self):
return self.path_file
@property
def simpleData(self):
return self.arr
@property
def fullname(self):
return self.fullname
@property
def filename(self):
return self.filename
@property
def fileExt(self):
return self.ext
@property
def cleanData(self):
return self.cleanData
Использование:
Python:
ParsePath = CFPP(filepath)
Его смысл - получает строку пути до файла и разбирает ее по частям. Хочу добиться, чтобы в ParsePath был dict с данными cleanData. Сейчас он жалуется, что переменную "self.pathFile" невозможно установить:
А при запуске жалуется, что невозможно установить переменную:
Traceback (most recent call last):
File "D:/DOCUMENTS/ПРОГРАММИРОВАНИЕ/PYTHON/PROJECTS/PYCHARM/test/1.0.0.0/test01.py", line 22, in <module>
ParsePath = CFPP(captcha_path)
File "D:\DOCUMENTS\ПРОГРАММИРОВАНИЕ\PYTHON\PROJECTS\PYCHARM\test\1.0.0.0\CoolFilePathParser.py", line 20, in __init__
self.pathFile = os.path.basename(self.ps)
AttributeError: can't set attribute
Process finished with exit code 1
Почему невозможно, если я присваиваю ей значение? Или __init__ служит только для присваивания переменных? Если это так, то тогда несколько вопросов:
1 - Как добиться того, что в cleanData будет уже готовый массив?
2 - Каким образом можно было бы отдельно получить каждый параметр из cleanData (воплощено через @property)?
3 - Как сделать, чтобы ParsePath сразу получал данные cleanData при инициализации CFPP(captcha_path)?