我正在进行代码审查,并且偶然发现了一个抽象类继承自具有继承类属性的抽象基类的情况。
目前我无法调试代码以了解它是如何工作的,但我确信这已经在生产中使用了很多年。
因此,对于我来说,以下逻辑如何有效地工作是一个谜。
传承:
public class Inheritor : Base {
...
properties
...
}
基地:
public class Base {
public Inheritor { get; set; }
...
other properties
...
}
这怎么可能?
答案 0 :(得分:6)
希望在概念层面上有意义的例子:
public class Boss : Employee {
...
properties
...
}
public class Employee {
public Boss { get; set; }
...
other properties
...
}
可能有很多类型的员工,但每个人都可能有一个老板(他是一个特定的员工)。回想一下,非基本类型的属性是引用,因此Employee
不包含Boss
的情况(因为它也是Employee
1}})包含Boss
等等。 Employee
可以引用 Boss
,其中可以引用 a Boss
,依此类推。在某些时候,它会停留在Boss
没有Boss
(引用为null
)的情况下,或者它会循环显示。
答案 1 :(得分:3)
我认为你可能会嘲笑 is-a 与 has-a 的关系概念,你认为它在某种程度上受到限制就像是一个方式。 def game_col1(self):
self.player = self.player + 1
if self.player %2 == 0:
self.window.col1_playera()
else:
self.window.col1_playerb()
print(self.player)
def game_col2(self):
self.player = self.player + 1
if self.player %2 == 0:
self.window.col2_playera()
else:
self.window.col2_playerb()
print(self.player)
def game_col3(self):
self.player = self.player + 1
if self.player %2 == 0:
self.window.col3_playera()
else:
self.window.col3_playerb()
print(self.player)
def game_col4(self):
self.player = self.player + 1
if self.player %2 == 0:
self.window.col4_playera()
else:
self.window.col4_playerb()
print(self.player)
def game_col5(self):
self.player = self.player + 1
if self.player %2 == 0:
self.window.col5_playera()
else:
self.window.col5_playerb()
print(self.player)
def game_col6(self):
self.player = self.player + 1
if self.player %2 == 0:
self.window.col6_playera()
else:
self.window.col6_playerb()
print(self.player)
def game_col7(self):
self.player = self.player + 1
if self.player %2 == 0:
self.window.col7_playera()
else:
self.window.col7_playerb()
print(self.player)
是Inheritor
,如果倒数为真,则会很奇怪:如果Base
也是Base
。但没有理由不能Inheritor
有Base
。