Tôi muốn tạo một loại lớp tiện ích chỉ chứa các phương thức tĩnh có thể gọi bằng tiền tố lớp tên. Hình như tôi đang làm điều gì sai :)Phương thức tĩnh lớp Python
Đây là lớp học nhỏ của tôi:
class FileUtility():
@staticmethod
def GetFileSize(self, fullName):
fileSize = os.path.getsize(fullName)
return fileSize
@staticmethod
def GetFilePath(self, fullName):
filePath = os.path.abspath(fullName)
return filePath
Bây giờ tôi phương pháp "chính":
from FileUtility import *
def main():
path = 'C:\config_file_list.txt'
dir = FileUtility.GetFilePath(path)
print dir
và tôi đã nhận một lỗi: unbound method GetFilePath() must be called with FileUtility instance as first argument (got str instance instead)
.
A có một số câu hỏi ở đây:
- Tôi đang làm gì sai? Không nên gọi phương thức tĩnh bằng tên lớp?
- Tôi có thực sự cần một lớp tiện ích, hoặc có cách nào khác để đạt được điều tương tự trong Python không?
- Nếu tôi cố gắng thay đổi mã trong chính tôi nhận được:
TypeError: GetFilePath() takes exactly 1 argument (2 given)
mới main
:
from FileUtility import *
def main():
objFile = FileUtility()
path = 'H:\config_file_list.txt'
dir = objFile.GetFilePath(path)
print dir
Hi Collin, cảm ơn bạn đã trả lời, tôi đã làm như bạn đề nghị, file python đơn giản với danh sách các phương pháp và trong chính: dir = FileUtility.GetFilePath (đường dẫn) Tôi nhận được một lỗi: phương pháp unbound GetFilePath() phải được gọi với dụ FileUtility như là đối số đầu tiên (có str instance thay vì) – ilyaw77
Xin lỗi, để lại một tự lạc trong đó trong lần chạy đầu tiên. Bạn vẫn có một lớp FileUtility ở đâu đó? – Collin
Vấn đề là bạn không nên có lớp FileUtility. Cũng giống như bạn có thể viết các hàm miễn phí trong C++, bạn nên làm tương tự ở đây. Tên mô-đun (bản đồ cho các tệp) cũng phải là tất cả các chữ thường. – Collin