0

Pythonコードを実行しようとしましたが、パラメーターの受け渡しで問題が発生しました。私のPythonコードは次のとおりです。

#!/usr/bin/python
import MySQLdb

class Sim(object):

    def print_db_parameters(self):
         print "Host = %s" %self.host
         print "User = %s" %self.user
         print "Password = %s" %self.password
         print "Database = %s" %self.database

def main():
    host = "localhost"
    user = "root"
    password = "root"
    database = "sim"
    sim_test = Sim(host,user,password,database)
    sim_test.print_db_parameters()

if __name__ == "__main__":
    main()   

実行すると、次のエラーが発生します。

Traceback (most recent call last):
  File "Sim.py", line 21, in <module>
    main()   
  File "Sim.py", line 17, in main
    sim_test = Sim(host,user,password,database)
  TypeError: object.__new__() takes no parameters

何か考えはありますか?

4

3 に答える 3

3

クラスのメソッドはありませんが__init__、コンストラクターにパラメーターを渡しています。__init__パラメータを受け入れるメソッドを作成する必要があります。

于 2012-11-28T19:17:58.750 に答える
3

クラスコンストラクターにパラメーターを渡します

sim_test = Sim(host,user,password,database)

しかし、それらを受け入れません。__init__それらに対処するためのメソッドを作成する必要があります。

#!/usr/bin/python
import MySQLdb

class Sim(object):
    def __init__(self, host, user, password, database):  #New method!!
        self.host = host
        self.user = user
        self.password = password
        self.database = database

    def print_db_parameters(self):
         print "Host = %s" %self.host
         print "User = %s" %self.user
         print "Password = %s" %self.password
         print "Database = %s" %self.database

def main():
    host = "localhost"
    user = "root"
    password = "root"
    database = "ARISTEIA_vax"
    sim_test = Sim(host,user,password,database)
    sim_test.print_db_parameters()

if __name__ == "__main__":
    main()   
于 2012-11-28T19:22:12.500 に答える
1

mipadiを例でフォローアップするには:Pythonでのオブジェクト指向プログラミングに関するチュートリアルを読むと非常に役立つでしょうhttp://docs.python.org/2/tutorial/classes.html

class Sim(object):

    def __init__(self, host, user, password, database):
       self.host = host
       self.user = user
       self.password = password
       self.database = database

    def print_db_parameters(self):
         print "Host = %s" %self.host
         print "User = %s" %self.user
         print "Password = %s" %self.password
         print "Database = %s" %self.database
于 2012-11-28T19:22:07.823 に答える