假设我有一个类,它有许多子类。我可以实例化这个类。然后我可以将其__class__属性设置为子类之一。我已经有效地将类类型更改为其子类的类型,在一个事件对象上。我可以调用它的方法来调用这些方法的子类版本。那么,这样做有多危险?看起来很奇怪,但这样做是不是错误?尽管能够在运行时更改类型,但这是应该完全避免的语言特性吗?为什么或为什么不?(根据回复,我将发布一个更具体的问题,说明我想做什么,以及是否有更好的选择)。 最佳答案 以下是我能想到的导致这种危险的事情的list,按从最坏到最不坏的粗略顺序排列:阅读或调试您的代码的人可能会感到困
在Python2.7和3中,我使用以下方法调用父类(superclass)的函数:classC(B):def__init__(self):B.__init__(self)我看到也可以用super(B,self).__init__()和python3super()替换B.__init__(self).__init__().这两种方式有什么优点或缺点吗?至少对我来说直接从B调用它更有意义,但也许有一个很好的理由,super()只能在使用元类时使用(我通常避免)。 最佳答案 对于单继承,super()只是引用基类型的一种更好的方式。这样,
在Python2.7和3中,我使用以下方法调用父类(superclass)的函数:classC(B):def__init__(self):B.__init__(self)我看到也可以用super(B,self).__init__()和python3super()替换B.__init__(self).__init__().这两种方式有什么优点或缺点吗?至少对我来说直接从B调用它更有意义,但也许有一个很好的理由,super()只能在使用元类时使用(我通常避免)。 最佳答案 对于单继承,super()只是引用基类型的一种更好的方式。这样,
大家好,我的问题是我想弄清楚如何让一个类(class)进入另一个类(class)。我正在做的是我有一个关于飞机的类(class),其中包含关于它可以飞多快、可以飞多远、油耗等的所有统计数据。然后我有一个FlightClass,其中包含有关航类的所有详细信息:距离、开始位置和时间、结束位置和时间、持续时间等等。但我意识到每架飞机都有多个航类,那为什么不把所有的航类数据放到飞机类中呢?虽然我如何将一个类放到另一个类中,所以我可以这样调用:Player1.Airplane5.Flight6.duration=5hours我已经对飞机类做了一些处理,但是当我去保存信息(将所有内容都列出到文本文
大家好,我的问题是我想弄清楚如何让一个类(class)进入另一个类(class)。我正在做的是我有一个关于飞机的类(class),其中包含关于它可以飞多快、可以飞多远、油耗等的所有统计数据。然后我有一个FlightClass,其中包含有关航类的所有详细信息:距离、开始位置和时间、结束位置和时间、持续时间等等。但我意识到每架飞机都有多个航类,那为什么不把所有的航类数据放到飞机类中呢?虽然我如何将一个类放到另一个类中,所以我可以这样调用:Player1.Airplane5.Flight6.duration=5hours我已经对飞机类做了一些处理,但是当我去保存信息(将所有内容都列出到文本文
我有一个关于python中的__class__的问题。文档说__class__是类实例所属的类。于是我进行了一系列的实验:classcounter:count=0def__init__(self):self.__class__.count+=1NewCounter1=counter()printNewCounter1.count#Theresultis1NewCounter2=counter()printNewCounter2.count#Theresultis2printNewCounter2.__class__.countisNewCounter2.count#result:Tru
我有一个关于python中的__class__的问题。文档说__class__是类实例所属的类。于是我进行了一系列的实验:classcounter:count=0def__init__(self):self.__class__.count+=1NewCounter1=counter()printNewCounter1.count#Theresultis1NewCounter2=counter()printNewCounter2.count#Theresultis2printNewCounter2.__class__.countisNewCounter2.count#result:Tru
我试图了解使用tf.Session和tf.train.MonitoredTrainingSession之间的区别,以及我可能更喜欢其中一个。似乎当我使用后者时,我可以避免许多“琐事”,例如初始化变量、启动队列运行器或设置文件编写器以进行汇总操作。另一方面,在受监控的培训类(class)中,我无法明确指定要使用的计算图。这一切对我来说似乎相当神秘。这些类的创建方式背后是否有一些我不理解的基本哲学? 最佳答案 我无法就这些类的创建方式提供一些见解,但这里有一些我认为与您如何使用它们相关的事情。tf.Session是pythonTenso
我试图了解使用tf.Session和tf.train.MonitoredTrainingSession之间的区别,以及我可能更喜欢其中一个。似乎当我使用后者时,我可以避免许多“琐事”,例如初始化变量、启动队列运行器或设置文件编写器以进行汇总操作。另一方面,在受监控的培训类(class)中,我无法明确指定要使用的计算图。这一切对我来说似乎相当神秘。这些类的创建方式背后是否有一些我不理解的基本哲学? 最佳答案 我无法就这些类的创建方式提供一些见解,但这里有一些我认为与您如何使用它们相关的事情。tf.Session是pythonTenso
如果我有Python代码classA():passclassB():passclassC(A,B):pass我有类C,有没有办法遍历它的父类(superclass)(A和B)?类似伪代码的东西:>>>magicGetSuperClasses(C)(,)一个解决方案似乎是inspectmodule和getclasstree函数。defmagicGetSuperClasses(cls):return[o[0]foroininspect.getclasstree([cls])iftype(o[0])==type]但这是实现目标的“Pythonian”方式吗? 最佳