在旧类的基础上设置一些旧类的默认参数值,有没有容易得到的新类?代码如下:
class DB():
def __init__(self, ip, port, dbname, table):
self.ip = ip
self.port = port
self.dbname = dbname
self.table = table
def process(self):
print self.ip, self.port, self.dbname, self.table
现在,我需要获得一组新类,这些类的默认值为OldClass.a
、OldClass.b
、OldClass.c
,我将执行以下操作:
class UserDB(DB):
def __init__(self, dbname, table):
OldClass.__init__(self, ip='user.db.com', port='1234', dbname=dbname, table=table)
class ProdDB(DB):
def __init__(self, dbname, table):
OldClass.__init__(self, ip='prod.db.com', port='1314', dbname=dbname, table=table)
class CommentDB(DB):
def __init__(self, dbname, table):
OldClass.__init__(self, ip='comment.db.com', port='1024', dbname=dbname, table=table)
class MeetingDB(DB):
def __init__(self, dbname, table):
OldClass.__init__(self, ip='meeting.db.com', port='8888', dbname=dbname, table=table)
userDB = UserDB('user', 'new')
userDB.process()
prodDB = ProdDB('prod', 'lala')
prodDB.process()
commentDB = UserDB('comm', 'gg')
commentDB.process()
meetingDB = MeetingDB('met', 'ok')
meetingDB.process()
我记得有一些技巧可以简化这些子类详细代码。欢迎任何建议。提前谢谢。你知道吗
你可以用另一种间接方法来解决任何问题 在
MyDB
之间有另一个类怎么样?地址:添加覆盖
__init__()
的类:现在与类属性一起使用。这些类不再需要
__init__()
:制作两个测试实例:
输出:
这提供了一种相当声明性的做事方式。 它应该非常可读,特别是当类
UserDB
和ProdDB
没有方法时。你知道吗由于实例
self.ip
和self.port,
中不存在self
,如果我们使用UserDB
,搜索将继续到当前类的类属性,即UserDB
。你知道吗您不需要调用父类
__init__
,因为您只需要设置实例属性的值。您只需执行以下操作:我觉得干净多了。事实上,你不需要4个儿童班。您可以在单个类中使用参数来区分每个数据库的类别,如下所示:
要创建对象,只需执行以下操作:
继承是一件了不起的事情:
相关问题 更多 >
编程相关推荐