使用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()
super().__init__()和P
请解释为什么我不能使用super(class, self)访问类继承层次结构中较高级别中定义的属性,以及如何访问这些属性。
根据文档,super(class, self应该返回一个代理对象,通过它我可以访问父类实例中的def name()。
返回代理对象,该对象将方法调用委托给类型为类型的父类或同级类。这对于访问已在类中重写的继承方法非常有用。
对象或类型确定要搜索的方法解析顺序。搜索从类型后面的类开始。
例如,如果对象或类型的mro为D -> B -> C -> A ->对象,而类型的值为B,则超级()搜索C -> A ->对象。
我
我正在寻找一种向类中添加公共属性装饰器的简写。
class Animal:
def __init__(self):
self._attributes = {}
class Dog(Animal):
@property
def color(self):
return super()._attributes.get('color', None)
@color.setter
def color(self, value):
if value is not None:
这是密码让我困惑。
#python3 code
class SuperClass():
def __init__(self,a):
self.a = a
class SubClass(SuperClass):
def __init__(self,a):
self.a = a
super(SubClass,self).__init__(a+1)
if __name__ == '__main__':
sub = SubClass(1)
print(sub.a) # result is 2
我有三个类:A、B和C。
C继承自A和B (按此顺序)。A和B的构造函数签名不同。如何调用两个父类的__init__方法?
我在代码方面的努力:
class A(object):
def __init__(self, a, b):
super(A, self).__init__()
print('Init {} with arguments {}'.format(self.__class__.__name__, (a, b)))
class B(object):
def __init__(self, q):
su
我只是尝试在python中使用多重继承。我想出了这个
class ParentOne:
def foo(self):
print("ParentOne foo is called")
class ParentTwo:
def foo(self):
print("ParentTwo foo is called")
class Child(ParentOne, ParentTwo):
# how is this working
def call_parent_two_foo(self):
我使用django,但这是一个通用的python问题。
我已经定义了一个类,我打算用它从django.forms扩展django.forms和Form类。
代码如下所示:
class FormMixin(object):
def __init__(self, *args, **kwargs):
""" every method ocurrence must call super """
super(FormMixin, self).__init__(*args, **kwargs)
se
我是Python的初学者,用Lutz的书来理解Python中的OOPS。这个问题可能是基本问题,但我希望能提供任何帮助。我对此进行了研究,并找到了关于“如何”的答案,但没有找到“为什么”。
正如我从这本书中了解到的,如果Sub继承了Super,那么就不需要调用超类‘(Super's) __init__()方法。
示例:
class Super:
def __init__(self,name):
self.name=name
print("Name is:",name)
class Sub(Super):
pass
a
我想要有一个处理字典的函数,像字典一样寻址,或者类似的,只需很少的工作,这样当被调用时,我可以运行其他代码。
我认为将dict子类化似乎更容易,所以我这样做了。通过阅读help(dict),我想我已经介绍了所有的字典编辑函数,所以也调用了一个回调函数。我有吗?还有像pop这样返回编辑值的其他类型吗?
class BindedDict(dict):
"""Custom dictionary with callback when edited."""
def __init__(self, callback, *a, **kw):
考虑下面的python代码片段
class A(object):
def __init__(self, a):
self.a = a
class B(A):
def __init__(self, a, b):
super(B, self).__init__(a)
self.b = b
class C(A):
def __init__(self, a, c):
super(C, self).__init__(a)
self.c = c
class D(B, C):
def __i
类名NeuralNet和self关键字在超级调用中传递的含义不是一样吗?
super(NeuralNet,self).__init__() # init super
下面是示例中的代码片段:
class NeuralNet(nn.Module):
def __init__(self, use_batch_norm, input_size=784, hidden_dim=256, output_size=10):
"""
Creates a PyTorch net using the given parameters.
我的父类有一只猫和一只狗,我需要狗来执行猫类中的函数。
此外,猫和狗需要是父类中的内部嵌套类。
我读到狗需要使用super()来调用父类,然后使用它的猫实例。但它不起作用。
我得到了错误
TypeError: super(type, obj): obj must be an instance or subtype of type
_
Animal = Parent()
Animal.ThisDog.BarkToCat()
class Parent(object):
def __init__(self, *args, **kwargs):
self.ThisCa
我从github获得了关于MRO和C3的以下代码,我不太理解最后三行代码,以及python3.x中的超级().foo()、超级(B,self).foo()和超级(C,self).foo()之间有什么不同,代码如下:
class A(object):
def foo(self):
print('foo of A')
class B(A):
pass
class C(A):
def foo(self):
print('foo fo C')
class D(B, C):
pass
class
我想知道从super()函数获得的实例的类型。我试过print(super())和__print(type(super()))__
class Base:
def __init__(self):
pass
class Derive(Base):
def __init__(self):
print(super())
print(type(super()))
super().__init__()
d = Derive()
结果是
<super: <class 'D