2013-07-08 10 views
61

मैं अजगर के लिए नया हूं और दीवार पर मारा है। मैं कई ट्यूटोरियल पीछा किया लेकिन नहीं कर सकते त्रुटि अतीत मिलता है:टाइपरर: गुम 1 आवश्यक स्थितित्मक तर्क: 'स्वयं'

Traceback (most recent call last): 
    File "C:\Users\Dom\Desktop\test\test.py", line 7, in <module> 
    p = Pump.getPumps() 
TypeError: getPumps() missing 1 required positional argument: 'self' 

मैं कई ट्यूटोरियल की जांच की लेकिन वहाँ कुछ भी मेरे कोड से अलग हो प्रतीत नहीं होता है। केवल एक चीज जिसे मैं सोच सकता हूं वह है कि अजगर 3.3 को विभिन्न वाक्यविन्यास की आवश्यकता होती है।

मुख्य scipt:

# test script 

from lib.pump import Pump 

print ("THIS IS A TEST OF PYTHON") # this prints 

p = Pump.getPumps() 

print (p) 

पम्प वर्ग:

import pymysql 

class Pump: 

    def __init__(self): 
     print ("init") # never prints 


    def getPumps(self): 
       # Open database connection 
       # some stuff here that never gets executed because of error 

अगर मैं सही ढंग से समझ "स्व" निर्माता और तरीकों के लिए स्वचालित रूप से पारित कर दिया है। मुझसे यहां क्या गलत हो रहा है?

मैं खिड़कियों 8 का उपयोग कर रहा अजगर 3.3.2

उत्तर

90

साथ आप यहाँ एक वर्ग उदाहरण का दृष्टांत की जरूरत है।

उपयोग

p = Pump() 
p.getPumps() 

छोटे उदाहरण -

>>> class TestClass: 
     def __init__(self): 
      print "in init" 
     def testFunc(self): 
      print "in Test Func" 


>>> testInstance = TestClass() 
in init 
>>> testInstance.testFunc() 
in Test Func 
+6

एबीसी एक अच्छा उदाहरण नाम नहीं है क्योंकि यह सार बेस क्लास के लिए है। –

+0

पहले कोशिश की लेकिन लापता था "()"। क्या वह नया अजगर 3.x है? – DominicM

+1

ओह। महसूस नहीं किया। इसे ठीक करना माफ़ कीजिये। –

24

आप पहली बार यह प्रारंभ करने की आवश्यकता:

p = Pump().getPumps() 
+3

सरलता अक्सर कम मूल्यांकन होती है। – theeastcoastwest

+4

ऐसा करने से विधि getPumps() विधि के बराबर होती है, जबकि यह रन पंप पंप() वर्ग के लिए चर के रूप में 'प्रयोग योग्य' नहीं होगा। यह एक अद्भुत अभ्यास इमो नहीं है क्योंकि इसके बेकार एक बेकार चर बनाते हैं। यदि एकमात्र लक्ष्य GetPumps फ़ंक्शन को चलाने के लिए है, तो यह फ़ंक्शन के लिए चर बनाने के बजाय पंप()। GetPumps() चल रहा है। – Ashmoreinc

1

तुम भी समय से पहले ही PyCharm की सलाह ले रही है एक टिप्पणी करने के लिए इस त्रुटि प्राप्त कर सकते हैं विधि @staticmethod। एनोटेशन निकालें।

संबंधित मुद्दे