为了账号安全,请及时绑定邮箱和手机立即绑定

Python:父类实例的子实例类

Python:父类实例的子实例类

交互式爱情 2021-03-31 08:11:59
我是OOPS的新手我想知道何时P初始化父类实例,而我想初始化子类实例C喜欢class A(object):    def __init__(self):        print "A created"P = A()class B(A):    def __init__(self):        print super((B), self).__init__ # Q1: How to get "A created" from parent class?        print self.__class__.__name__        print super(B, self).__class__.__name__问题2:现在,如果我创建一个实例z = B(),我想创建z为Pie的子实例,z仅当P存在较早的实例时才应创建。如果将任何属性添加到属性,则的属性P应向下流动到zw /数据。z如果P不存在,基本上不应该创建同样y = B() iff x = A() 有办法吗?我这样做是因为我正在创建一个程序,其中将A在各种上下文中创建Class的多个实例。Mathematics = A()English = A()Now,Algebra = B() iff Mathematics = A()And Grammar = B() iff English = A()是否有自我检查器进行检查?我的意思是怎么做到的?关于Q2的更新: 另一种询问方式是,在创建实例以检查A类的实例并获取特定的实例数据时,是否有方法可以检入B类?就像在B类中一样,检查由A类构成的实例,然后选择一个实例,并从该实例的属性中获取数据,以获取要创建的B类实例?还 z = B()    <bound method B.__init__ of <__main__.B object at 0x000000000791DB38>>    Bsuper #Q3: I thought it would print `A`. WHY NOT?
查看完整描述

4 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

您没有打__init__进来B。使用函数名称只会为您提供该函数对象。括号后__init__()实际执行该功能。


super(B, self)返回一个类,而不是一个对象(这很有意义-一个类不具有超实例,它具有一个超类),因此您随后__class__对该类进行调用,这将导致意外的结果。您使用__class__onself是因为它self是该类的实例。


class B(A):

    def __init__(self):

        super(B, self).__init__()

        print type(self).__name__

        print super(B, self).__name__

请注意,我使用type()过度访问__class__-使用内置函数比直接访问魔术值更好。它更具可读性,并允许特殊功能。


查看完整回答
反对 回复 2021-04-01
  • 4 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信