from flask_sqlalchemy import SQLAlchemy
import datetime
db = SQLAlchemy()
class BaseModel(db.Model):
"""Base data model for all objects"""
__abstract__ = True
def __init__(self, *args):
super(self).__init__(*args)
def __repr__(self):
"""Define a base way to print models"""
return '%s(%s)' % (self.__class__.__name__, {
column: value
for column, value in self._to_dict().items()
})
def json(self):
"""Define a base way to jsonify models, dealing with datetime objects"""
return {
column: value if not isinstance(value, datetime.date) else value.strftime('%Y-%m-%d')
for column, value in self._to_dict().items()
}
class Station(BaseModel, db.Model):
"""Model for the stations table"""
__tablename__ = 'stations'
id = db.Column(db.Integer, primary_key = True)
lat = db.Column(db.Float)
lng = db.Column(db.Float)
TypeError: super() argument 1 must be type, not Station
我知道没有参数的super只在python3中使用。但在我的情况下,我应该在super()中填写什么?也可以将super()放在父类(basemodel)的init中吗?你知道吗
因为您在
BaseModel.__init__
中没有做任何事情,所以正确的方法是根本不实现它。如果没有在BaseModel
中定义__init__
,您将自动地、更有效地转到超类的__init__
。你知道吗也就是说,如果你在} ,显式提供您试图绕过寻找超类的当前类的名称,然后
BaseModel.__init__
中做了一些有意义的事情,你不能像那样使用一个参数super
。有一个参数super
的用途非常有限(基本上,只适用于classmethod
,您传递的是类型,而不是类型的实例作为参数)。您需要two-argument ^{self
,例如:相关问题 更多 >
编程相关推荐