मैं एक प्रकार की उपयोगिता कक्षा बनाना चाहता हूं जिसमें केवल स्थिर विधियां हैं जो नाम वर्ग उपसर्ग द्वारा कॉल करने योग्य हैं।पायथन कक्षा स्थैतिक विधियां
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
अब मेरी "मुख्य" विधि:
from FileUtility import *
def main():
path = 'C:\config_file_list.txt'
dir = FileUtility.GetFilePath(path)
print dir
और मैं एक त्रुटि मिली: unbound method GetFilePath() must be called with FileUtility instance as first argument (got str instance instead)
की तरह मैंने कुछ गलत :)
यहाँ मेरी छोटी सी वर्ग है कर रहा हूँ लगता है।
- क्या मैं गलत कर रहा हूँ:
एक यहाँ कुछ प्रश्न हैं? क्लासनाम द्वारा स्थिर विधि को कॉल करने योग्य नहीं होना चाहिए?
- क्या मुझे वास्तव में उपयोगिता वर्ग की आवश्यकता है, या क्या पाइथन में इसे प्राप्त करने के अन्य तरीके हैं?
- अगर मैं में मुख्य मैं हो रही है कोड को बदलने की कोशिश:
TypeError: GetFilePath() takes exactly 1 argument (2 given)
नई main
:
from FileUtility import *
def main():
objFile = FileUtility()
path = 'H:\config_file_list.txt'
dir = objFile.GetFilePath(path)
print dir
हाय कोलिन,, उत्तर के लिए धन्यवाद के रूप में आप का सुझाव दिया, विधि की सूची के साथ और मुख्य में सादे अजगर फ़ाइल मैंने किया: dir = FileUtility.GetFilePath (पथ) मुझे एक त्रुटि मिली: अनबाउंड विधि GetFilePath() को FileUtility उदाहरण के साथ पहले तर्क के रूप में जाना जाना चाहिए (इसके बजाय str instance मिला) – ilyaw77
क्षमा करें, पहले रन पर वहां एक भटक गए स्व को छोड़ दें। क्या आपके पास अभी भी फाइलउटिलिटी क्लास है? – Collin
बिंदु यह है कि आपके पास क्लास फ़ाइल उपयोगिता नहीं होनी चाहिए। जैसे ही आप सी ++ में मुफ्त फ़ंक्शन लिख सकते हैं, आपको वही करना चाहिए। मॉड्यूल नाम (जो फाइलों के लिए मानचित्र) सभी कम मामले भी होना चाहिए। – Collin