作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 python 2.7,并且我编写了一组 python 类以便将数据上传到我的数据库。但是我不确定我是否完全理解如何在类之间使用继承。我拥有的是一个用户和数据库类——它从列表中搜索用户/数据库:
class User(object):
user_lst = ['user1', 'user2', 'user3']
def __init__(self, username):
self.username = username
def find_user(self):
if self.username not in self.user_lst:
print('User not found, script will exit')
exit()
else:
pass
class Database(object):
db_lst = ['db1', 'db2', 'db3']
def __init__(self, database):
self.database = database
def find_db(self):
if self.database not in self.user_lst:
print('Database not found, script will exit')
exit()
else:
pass
我使用返回的 raw_input() 获取用户和数据库的值:
un = 'user1'
db = 'db1'
按照我的理解来实例化这些类,我需要通过类传递这些值,这时我也可以调用方法-
User(un).find_user()
Database(db).find_db()
我现在想使用第三个类来继承这些值以便连接到数据库:
class DatabaseConnect(User, Database):
def __init__(self):
User.__init__(self, username)
Database.__init__(self, database)
def connect(self, pw):
try:
connect = MySQLdb.connect(host = 'localhost', user = self.username, passwd = pw, db = self.database, local_infile = 1)
cursor = connect.cursor()
print('Connected to '+self.database)
except:
print('Did not connect to database')
exit()
然后我尝试使用以下方式连接:
DatabaseConnect().connect('password1')
但是这不起作用。我试图添加到我的 DatabaseConnect 类 init 函数:
def __init__(self, username, database):
User.__init__(self, username)
Database.__init__(self, database)
我还尝试从这些类创建对象变量,例如:
user_obj = User(un)
user_obj.find_user()
db_obj = Database(db)
db_obj.find_user()
我是否需要创建这些对象变量,然后通过我的 DatabaseConnection 类传递它们——如果需要,我什至需要继承吗?这就是我困惑的原因。假设我使用这些对象变量并使用此类:
class DatabaseConnect(User, Database):
def __init__(self, username, database):
self.username = User.username
self.database = Database.database
def connect(self, pw):
try:
connect = MySQLdb.connect(host = 'localhost', user = self.username, passwd = pw, db = self.database, local_infile = 1)
cursor = connect.cursor()
print('Connected to '+self.database)
except:
print('Did not connect to database')
exit()
然后我用它来实例化它:
db_connect = DatabaseConnect(user_obj, db_obj)
这与简单地使用变量本身有什么不同:
db_connect = DatabaseConnect(un, db)
为什么我必须使用:
self.username = User.username
而不是简单地:
self.username = username
我正在努力理解这个概念,所以任何头脑都会受到赞赏。谢谢
最佳答案
如果您要继承,则不需要创建用户和数据库实例。您可以只创建一个 DatabaseConnect 对象:
class DatabaseConnect(User, Database):
def __init__(self, username, database):
User.__init__(self, username)
Database.__init__(self, database)
def connect(self, pw):
try:
connect = MySQLdb.connect(host = 'localhost', user = self.username, passwd = pw, db = self.database, local_infile = 1)
cursor = connect.cursor()
print('Connected to '+self.database)
except:
print('Did not connect to database')
exit()
dbConnect = new DatabaseConnect("username", "database")
dbConnect.find_db()
Database not found, script will exit
dbConnect.find_user()
User not found, script will exit
关于Python 类继承 - 如何使用它连接到 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39267056/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!