【发布时间】:2016-10-07 15:44:43
【问题描述】:
编辑:对于父母/孩子的困惑,我们深表歉意。我是 OOP 的新手,所以我的术语很混乱。
我想了解引用将由继承的(子类)提供的类属性的适当策略。
我有一个案例,我有一个将使用的公共基类,以及子类可以继承的多个父类。每个子类将具有相同的方法集,但实现不同。我遇到的问题是我需要子类来引用父类的类属性。下面的代码似乎工作正常,但我的 IDE (pycharm) 抱怨未解析的属性引用,所以我想知道这是否是反模式。
模块parent1.py:
class Parent(object):
def __init__(self):
pass
def do_something(self):
result = self.instance_id
模块parent2.py:
class Parent(object):
def __init__(self):
pass
def do_something(self):
result = self.instance_id+1
模块child.py:
if CONSTANT:
from parent1 import Parent
else:
from parent2 import Parent
class Child(Parent):
def __init__(self, instance_id):
self.instance_id = instance_id
Parent.__init__(self)
在这种情况下,即使代码有效,pycharm IDE 也会将 Parent1 和 Parent2 中对 self.instance_id 的引用标记为“未解析的属性引用”。我考虑过将它移到每个父类中,但是关于 instance_id 的任何内容都不需要在 Parent 类中更改,因此为每个 Parent 定义一次感觉是多余的。所以我的问题如下: 1、这个代码组织有什么问题吗? 2.如果没有问题,我该如何修复IDE来解决这个引用?
【问题讨论】:
-
我从来没有听说过父母从孩子那里继承。
-
你应该为你试图表示的任何结构选择不太容易混淆的名称。子类从父类继承。
-
Child2的目的是什么?它从未在您的代码中的任何地方引用。 -
另外,您能否举例说明如何使用这些类,以及产生“未解析属性”错误的示例?
-
已编辑以阐明示例并修复父/子命名问题。
标签: python class python-3.x