面向对象类依赖判定:Bar类是否依赖Foo类?空值场景依赖是否有效?
class Foo {} class Bar { Foo foo; }
能否判定Bar依赖于Foo?
完全可以判定Bar依赖于Foo。
类之间的依赖是编译和类定义层面的绑定关系,和运行时的具体赋值无关:你要是只写Bar的代码不提供Foo的定义,连编译都过不了,编译器会直接报找不到Foo类型的错误,这就已经说明Bar的存在本身就强依赖Foo的定义。
foo值为None时,依赖关系是否会消失?
完全不会消失。
foo字段赋值为None只是运行时的实例状态,根本影响不到类层面已经固定的依赖关系:哪怕你运行时全程把foo设成空值,要加载Bar类也得保证运行环境里有Foo类的定义,编译的时候也还是得有Foo的代码才能让Bar正常编译,不可能因为运行时某个字段赋值为空,就抹掉类结构上已经存在的依赖。
内容的提问来源于stack exchange,提问作者Bill Zhang
相关产品推荐
相关产品推荐

