ob_link_constructed和ob_link_init谁先被调用
时间: 2023-08-21 07:41:59 浏览: 81
在 GObject 中,对象的初始化过程分为两个阶段:`constructed` 和 `init`。其中 `constructed` 阶段是在对象层次结构被建立后调用的,而 `init` 阶段则是在对象实例化完成后调用的。
因此,在使用 GObject 建立对象时,`constructed` 阶段会先被调用,然后是 `init` 阶段。对于 `ob_link` 对象来说,`ob_link_constructed` 会先被调用,然后是 `ob_link_init`。
在 `constructed` 阶段,对象的基类和子类的成员都已经被初始化,我们可以在这个阶段做一些与成员变量有关的初始化工作。而在 `init` 阶段,我们可以对对象进行更加详细的初始化,包括为成员变量赋初值、连接信号等。
需要注意的是,在实现一个自定义 GObject 类时,应当尽量避免手动调用 `constructed` 和 `init` 方法,而是应该使用 GObject 提供的宏来完成初始化工作。这样可以确保在对象初始化过程中不会出现错误。
相关问题
GStreamer-CRITICAL **: gst_element_link_pads_filtered: assertion 'GST_IS_BIN (parent)' failed ERROR: pipeline could not be constructed: syntax error.
这个错误通常是由于在构建GStreamer管道时发生了语法错误所导致的。请检查您的代码,确保所有元素都正确连接,并且没有任何语法错误。您还可以尝试使用GStreamer的调试功能来找出问题所在。例如,您可以使用GST_DEBUG环境变量来启用调试输出,或使用GST_DEBUG_BIN_TO_DOT_FILE宏来将管道转换为Graphviz DOT文件,以便更好地可视化管道结构。
UserWarning: The `lr` argument is deprecated, use `learning_rate` instead. super().__init__(name, **kwargs) WARNING:tensorflow:Model was constructed with shape (None, 100, 1) for input KerasTensor(type_spec=TensorSpec(shape=(None, 100, 1), dtype=tf.float32, name='input_1'), name='input_1', description="created by layer 'input_1'"), but it was called on an input with incompatible shape (None, 88, 1). WARNING:tensorflow:Model was constructed with shape (None, 100, 1) for input KerasTensor(type_spec=TensorSpec(shape=(None, 100, 1), dtype=tf.float32, name='input_2'), name='input_2', description="created by layer 'input_2'"), but it was called on an input with incompatible shape (None, 88, 1).
这个警告信息包含两个部分:
第一个部分是与 `lr` 参数相关的警告,与之前的警告信息一样,建议使用更新的 `learning_rate` 参数来代替。
第二个部分是关于模型输入形状不匹配的警告。模型在创建时使用了 `(None, 100, 1)` 的形状作为输入,但是在调用模型时输入的数据形状为 `(None, 88, 1)`,两者不匹配。这个警告提示我们需要检查模型的输入层和调用时传入的数据形状是否一致,如果不一致需要进行相应的调整。
可以尝试调整模型的输入形状,或者在调用模型时传入正确形状的数据。
阅读全文