标签: super

我可以在Python 2.5.6中使用Python 3 super()吗?

我可以super()在Python 2.5.6中使用干净的Python 3 语法吗?
也许有某种__future__进口?

python super python-2.5 python-3.x

15
推荐指数
3
解决办法
4104
查看次数

Objective C - 对超类的弱引用?

我试图在块内的超类上调用一个方法.为了避免保留周期,我需要对super的弱引用.我如何获得对超级的弱引用?

[self somethingWithCompletion:^(){
   [super doStuff];
}];
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但是给出了编译错误.

__weak MySuperClass *superReference = super;
Run Code Online (Sandbox Code Playgroud)

objective-c super

15
推荐指数
1
解决办法
2227
查看次数

Python self和super在多重继承中

在Raymond Hettinger 在PyCon 2015上的演讲" 超级考虑超级发言 "中,他解释了super在多重继承环境中使用Python 的优势.这是雷蒙德在演讲中使用的一个例子:

class DoughFactory(object):
    def get_dough(self):
        return 'insecticide treated wheat dough'


class Pizza(DoughFactory):
    def order_pizza(self, *toppings):
        print('Getting dough')
        dough = super().get_dough()
        print('Making pie with %s' % dough)
        for topping in toppings:
            print('Adding: %s' % topping)


class OrganicDoughFactory(DoughFactory):
    def get_dough(self):
        return 'pure untreated wheat dough'


class OrganicPizza(Pizza, OrganicDoughFactory):
    pass


if __name__ == '__main__':
    OrganicPizza().order_pizza('Sausage', 'Mushroom')
Run Code Online (Sandbox Code Playgroud)

有人在台下雷蒙德有关使用的差异self.get_dough(),而不是super().get_dough().我对Raymond的简要回答并不是很了解,但我编写了这个例子的两个实现来看看差异.两种情况的输出相同:

Getting dough
Making pie with pure untreated wheat dough
Adding: Sausage
Adding: …
Run Code Online (Sandbox Code Playgroud)

python inheritance self super method-resolution-order

15
推荐指数
1
解决办法
926
查看次数

使用randoms和super

我怎么会叫一个Randomjava.util.Randomsupertype constructor

例如

Random rand = new Random();
int randomValue = rand.nextInt(10) + 5;

public Something() 
{
    super(randomValue);
    //Other Things
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,编译器说我" 在调用randomValue之前无法引用supertype constructor".

java random compilation super

15
推荐指数
2
解决办法
786
查看次数

在特征中扩展特征时,"超级"指的是什么?

我想在一个特征中扩展一个特征,如下所示:

  trait NodeTypes {
    trait Node {
      def allNodesHaveThis: Int
    }
  }

  trait ScrumptiousTypes extends NodeTypes {
    trait Node extends super.Node {
      def scrumptiousness: Int
    }
  }

  trait YummyTypes extends NodeTypes {
    trait Node extends super.Node {
      def yumminess: Int
    }
  }

  object Graph extends NodeTypes with ScrumptiousTypes with YummyTypes {
    case class Node() extends super.Node {
      override def allNodesHaveThis = 1
      override def scrumptiousness = 2  // error: ScrumptiousTypes.Node has been disinherited
      override def yumminess = 3
    }
  } …
Run Code Online (Sandbox Code Playgroud)

scala traits super mixins inner-classes

15
推荐指数
1
解决办法
504
查看次数

django模板 - 在包含的模板中使用block.super失败(异常)

我们的想法是在一个页面上有多个小部件,并包含这个'小部件'所需的所有js和css文件(以这种方式管理文件很容易).重复的文件不是问题.每个小部件的模板都包含在页面中{%include%}从小部件的模板中我试图将内容添加到父级的块中:

家长:

{%block js%}
{%endblock%}
Run Code Online (Sandbox Code Playgroud)

WIDGET

{%block js%}
   {{block.super}}
   ///my widget spectyfic JS
{%end block%}
Run Code Online (Sandbox Code Playgroud)

这是一个错误 {{block.super}}: Caught AttributeError while rendering: 'BlockNode' object has no attribute 'context'

我不确定我怎么能延长阻止...似乎这在django中是不可能的......任何想法?定义多个块将无法正常工作,因为我们不知道有多少不同的小部件,每个页面上都有我们的名字...(而且这不是一个nemplate的担心)

django templates block include super

14
推荐指数
1
解决办法
6895
查看次数

使用super调用多个父类的init?

可能重复:
Super可以处理多重继承吗?

Python继承?我有一个类结构(下面),并希望子类调用__init__父双方.这可能是以"超级"方式做的还是只是一个可怕的想法?

class Parent1(object):
    def __init__(self):
        self.var1 = 1

class Parent2(object):
    def _init__(self):
        self.var2 = 2

class Child(Parent1, Parent2):
    def __init__(self):
        ## call __init__ of Parent1
        ## call __init__ of Parent2
        ## super(Child, self).__init__()
Run Code Online (Sandbox Code Playgroud)

python init multiple-inheritance super new-style-class

14
推荐指数
3
解决办法
1万
查看次数

Python 3中的super()是如何实现的?

我想知道Python 3中的新超级是如何实现的.

在我做了一个小例子之后,这个问题就出现在了我脑海中,我得到了一个奇怪的错误.我正在使用Pyutilib组件架构(PCA),我已经制作了自定义元类来驱动另一个类的创建:

from pyutilib.component.core import implements, SingletonPlugin, PluginMeta, Interface

class IPass(Interface):
    pass

class __MetaPlugin(PluginMeta):
    def __new__(cls, name, baseClasses, classdict):
        print(cls, name, baseClasses, classdict)
        if baseClasses:
            baseClasses += (SingletonPlugin,)
        return PluginMeta.__new__(cls, name, baseClasses, classdict)

class Pass(metaclass=__MetaPlugin):
    implements(IPass)

    def __init__(self, inputs=[], outputs=[]):
        self.inputs = []
        self.outputs = []


class A(Pass):
    def __init__(self):
        print(self.__class__) # <class '__main__.A'>
        print(self.__class__.__class__) # <class '__main__.__MetaPlugin'>
        print(PluginMeta.__class__) # <class 'type'>
        super().__init__() # SystemError: super(): empty __class__ cell
        #Pass.__init__(self) - this works

a = A()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: …

python metaprogramming super python-3.x python-internals

14
推荐指数
2
解决办法
2179
查看次数

在Python中,当它是一个一次性的命名元组时,如何调用超类?

因此,我有一个用于串行API的大量消息Payload类,每个类都有许多不可变字段,一个解析方法和一些共享的方法.我构造它的方式是每个都将从字段行为的namedtuple继承,并从父类接收公共方法.但是,我在构造函数方面遇到了一些困难:

class Payload:
    def test(self):
        print("bar")

class DifferentialSpeed(Payload, namedtuple('DifferentialSpeed_', 
    'left_speed right_speed left_accel right_accel')):
    __slots__ = ()
    def __init__(self, **kwargs):
        super(DifferentialSpeed, self).__init__(**kwargs)
        # TODO: Field verification
        print("foo")

    @classmethod
    def parse(self, raw):
        # Dummy for now
        return self(left_speed = 0.0, right_speed = 0.1,
                    left_accel = 0.2, right_accel = 0.3)

    def __str__(self):
        return "Left Speed: %fm/s\nRight Speed: %fm/s\n"\
            "Left Acceleration: %fm/s^2\nRight Acceleration: %fm/s^2" % (
            self.left_speed, self.right_speed, self.left_accel, self.right_accel)


payload = DifferentialSpeed.parse('dummy')
print(payload)
Run Code Online (Sandbox Code Playgroud)

这有效,但我得到以下警告:

DeprecationWarning: object.__init__() takes no parameters
  super(DifferentialSpeed, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)

如果我**kwargs …

inheritance multiple-inheritance super namedtuple python-3.x

13
推荐指数
2
解决办法
5860
查看次数

super()和Parent类名之间有什么区别?

super()直接使用和使用父类名称有区别吗?例如:

class Parent:
    def __init__(self):
        print("In parent")
        self.__a=10

class Child(Parent):
    def __init__(self):
        super().__init__()     # using super()
        Parent.__init__(self)  # using Parent class name

c=Child()
Run Code Online (Sandbox Code Playgroud)

是否有内部之间的差异super().__init__()Parent.__init__(self)

python inheritance initialization super method-resolution-order

13
推荐指数
2
解决办法
3837
查看次数