继承问题

时间:2016-02-04 12:04:07

标签: python-2.7 class oop object inheritance

我正在编写一些代码并尝试将其分解为类。我对OOP很陌生,在收到我写的工作时遇到了一些麻烦。我不得不在Python 2.7中编写它,因为我之后使用的一些软件包没有兼容Python 3。

我是否会继承遗产?我基本上希望Timeseries类能够使用附加到Reanalysis对象的所有变量和参数,但只能返回node_coordinates。

class Reanalysis():
    """Initiates a reanalysis object"""

    def __init__(self, latitude, longitude, resolution):
        self.datetime_format = '%Y-%B-%d %H:%M'
        self.lat = latitude
        self.lon = longitude
        self.res = resolution
        self.node_coordinates = Timeseries().node_coordinates

class Timeseries(Reanalysis):

    def __init__(self):
        super(Timeseries, self).__init__()
        self.get_node_coordinates()

    def get_node_coordinates(self):
        """Determines node coordinates
        """

        latres = self.res
        lonres = self.res
        self.node_coordinates = set([(latres * np.floor(self.lat / latres),
                                  lonres * np.floor(self.lon / lonres)),
                                 (latres * np.ceil(self.lat / latres),
                                  lonres * np.floor(self.lon / lonres)),
                                 (latres * np.floor(self.lat / latres),
                                  lonres * np.ceil(self.lon / lonres)),
                                 (latres * np.ceil(self.lat / latres),
                                  lonres * np.ceil(self.lon / lonres))])

当我尝试编译时,我收到错误:

super(Timeseries, self).__init__()
TypeError: must be type, not classobj

由于

2 个答案:

答案 0 :(得分:0)

我认为你的问题是你没有将你的类定义为'new-style'类(即继承自'object'的类)。尝试将声明更改为

super(...)

这应该允许它与final Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "WiFi change detected; updating information...", Snackbar.LENGTH_LONG); snackbar.setAction("DISMISS", new View.OnClickListener() { @Override public void onClick(View v) { snackbar.dismiss(); } }); 正确互动。

您还需要匹配超类init的参数列表。超类需要传递3个参数。

答案 1 :(得分:0)

问题在于:

self.node_coordinates = Timeseries().node_coordinates

Timeseries类继承自Reanalysis,这意味着您无法使用Timeseries初始化Reanalysis对象。