Python方法解析之谜

2023-12-06

我不明白为什么这个程序失败了。

#!/usr/bin/env python
from __future__ import division, print_function
from future_builtins import *
import types
import libui as ui
from PyQt4 import QtCore
import sip

p = ui.QPoint()
q = QtCore.QPoint()

def _q_getattr(self, attr):
    print("get %s" % attr)
    value = getattr(sip.wrapinstance(self.myself(), QtCore.QPoint), attr)
    print("get2 %s returned %s" % (attr, value))
    return value

p.__getattr__ = types.MethodType(_q_getattr, p)

print(p.__getattr__('x')())  # Works!  Prints "0"
print(p.x())  # AttributeError: 'QPoint' object has no attribute 'x'

我使用 Boost.Python 创建 libui,它公开了 QPoint 类。我还包含了 PyQt4,它有一个 sip 暴露的 QPoint。我正在尝试完成两种类型之间的映射。

我查了一下p是一个新式的类,为什么不呢__getattr__被召唤p.x()?


这和这个问题有些相似别人遇到过就在昨天。简而言之,这似乎是特殊的方法(比如__getattr__, __str__, __repr__, __call__等等)在新式类中是不可重写的instance,即您只能在其类型中定义它们。

这是我针对该问题的解决方案的改编,希望对您有用:

def _q_getattr(self, attr):
    print("get %s" % attr)
    return getattr(self, 'x')

def override(p, methods):
    oldType = type(p)
    newType = type(oldType.__name__ + "_Override", (oldType,), methods)
    p.__class__ = newType

override(p, { '__getattr__': _q_getattr})
print(p.__getattr__('x')())  # Works!  Prints "0"
print(p.x())                 # Should work!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python方法解析之谜 的相关文章

  • Python 3 os.urandom

    在哪里可以找到完整的教程或文档os urandom 我需要获得一个随机 int 来从 80 个字符的字符串中选择一个字符 如果你只需要一个随机整数 你可以使用random randint a b 来自随机模块 http docs pytho
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 没有名为 StringIO 的模块

    我有Python 3 6 我想从另一个名为 run py 的 python 文件执行名为 operation py 的 python 文件 In operation py I do from cStringIO import StringI
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • .pyx 文件出现未知文件类型错误

    我正在尝试构建一个包含 pyx 文件的 Python 包 pyregion 但在构建过程中出现错误 检查以下输出 python setup py build running build running build py creating b
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 在 keras 中保存和加载权重

    我试图从我训练过的模型中保存和加载权重 我用来保存模型的代码是 TensorBoard log dir output model fit generator image a b gen batch size steps per epoch
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 在 Django 查询中使用 .extra(select={...}) 引入的值上使用 .aggregate() ?

    我正在尝试计算玩家每周玩游戏的次数 如下所示 player game objects extra select week WEEK games game date aggregate count Count week 但姜戈抱怨说 Fiel
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk

随机推荐

  • 仅指定操作时如何将一个控制器设置为默认控制器?

    我正在使用 MVC 2013 中的标准 MVC 模板 有一个Home具有 关于 联系 等操作的控制器 有一个Account具有登录 注销等操作的控制器 该应用程序部署在域中website 网址http 网站将产生 Home Index 的输
  • 在javascript中将十六进制颜色转换为整数

    我正在尝试将十六进制颜色字符串转换为 JavaScript 中的 int color int 必须与 VB6 的格式相同 我认为字节顺序不正确 例如 255 是红色 ff0000 16776960 是水色 00ffff 我有一个函数可以做相
  • C:传递(双重)赋值

    我在 C 中使用过这样的构造 list gt head list gt tail NULL 现在我考虑这是否真的如我所想 这是什么意思吗 list gt head NULL list gt tail NULL or list gt head
  • 以 Stellar JS 为中心的 CSS 背景图像

    我正在使用 Stellar JS 将背景图像设置为元素 并尝试实现以视差移动的居中图像 然而 当我尝试使用标准方法时 我意识到背景位置是由恒星更新的 然后恒星会覆盖居中 我假设这就是覆盖它的原因 我创建了一个小提琴来解释这种情况 http
  • 仅允许某些字符

    我想阻止输入除 0 9 a z A Z 范围内的字母数字字符之外的所有字符 所以当有人打字时 例如 没有任何内容写入输入 我怎样才能做到这一点 您需要编写一个函数来监听onkeypress事件 然后检查表单是否包含任何不需要的字符 如果包含
  • Ninject - 基于子域动态指定连接字符串

    我正在尝试使用 ninject 根据 url 动态指定连接字符串 我正在使用 ninject mvc nuget 包 该包使用 webActivator 我的代码如下 我的注射 kernel Bind
  • 检查选择是否包含链接

    我正在创建一个富文本编辑器 我想使用相同的按钮来链接和取消链接选择 document execCommand createLink and document execCommand unlink 允许用户链接和取消链接window getS
  • CentOS *** 错误:Phusion Passenger 似乎没有运行

    当我通过 capistrano 将 Rails 应用程序部署到我的 CentOS 服务器时 我一直收到此错误 错误 Phusion Passenger 似乎没有运行 如果您确定它正在运行 那么导致此问题的原因可能是 的 您使用 Apache
  • 如何使用vba更新用户窗体中的Excel工作表的数据

    你想知道如何从 Excel 工作表中检索数据并在用户表单中更新它 在图片上您可以看到用户表单的样子 我想做的是创建另一个用户表单 可以在工作表中搜索特定引用并更新该特定行的一些单元格 This is the code I have now
  • 测试 IE11 中正则表达式编译的功能

    我想测试一下Unicode 正则表达式属性转义以避免在不支持正则表达式的浏览器 例如 IE11 中编译损坏的正则表达式 理想情况下 我想写一些类似的内容 if regex supports unicode property escapes
  • 如何从 docker 容器内部获取 docker 主机的 IP 地址 [重复]

    这个问题在这里已经有答案了 正如标题所示 我需要能够检索 docker 主机的 IP 地址以及从主机到容器的端口映射 并在容器内部执行此操作 sbin ip route awk default print 3 正如 MichaelNeale
  • 带有 docker 和 .NET Core 2.0 的 VSTS CI/CD - 复制失败

    在关注几个 NET Core 2 0 Visual Studio Team Services 持续集成 持续交付示例时 我在 VSTS 中遇到了复制错误 通过 VS17 添加 docker 支持在本地使用这样的 dockerfile 效果很
  • 如何通过 VB.net 在 iTextSharp 中使用系统字体

    我正在使用 Itextsharp 通过 VB net 动态地将文本文件转换为 PDF 文档 但是 我需要使用不属于 iTextSharp 库的系统字体 我看过一些使用 C 的代码示例 然而 我是编程新手 我的经验全部是 Visual Bas
  • 如何处理从 jni 对 AudioTrack 的调用而不崩溃?

    我试图从 jni 回调写入 AudioTrack 并且收到信号 7 SIGBUS 故障地址 00000000 我看过 Wolf3D 示例odroid他们似乎使用 android os Handler 来发布一个 Runnable 它将在正确
  • C#中的yield关键字有什么用?

    In the 如何仅公开 IList 的片段问题之一的答案有以下代码片段 IEnumerable FilteredList foreach object item in FullList if IsItemInPartialList ite
  • Katalon:全局变量何时重置?

    当使用 Katalon 并在测试用例或测试套件期间 之前或之后更改 GlobalVariable 的值时 更改何时会重置为配置文件中定义的值 GlobalVariables 的值在测试套件的拆卸 或运行单个测试用例时拆卸测试用例 时重置为默
  • 证明,给定一个查询点 q,可以在 O(log n) 时间内测试 q 是否位于 P 内

    我正在尝试解决 计算几何算法和应用 第 3 版 de berg 等人 一书第 6 章 点位置的一些练习 不幸的是 我不知道如何解决以下练习 Given a convex polygon P as an array of its n vert
  • 使用numpy计算欧氏距离

    我有一个点集 我将其坐标存储在三个不同的数组 xa ya za 中 现在 我想计算此点集的每个点 xa 0 ya 0 za 0 等 与另一个点集的所有点 xb yb zb 之间的欧氏距离 并且每次将最小距离存储在一个新数组中 假设 xa s
  • Angular 5获取从服务到组件到模板的数据的数组问题[重复]

    这个问题在这里已经有答案了 尝试在模板 HTML 中显示从组件到调用并返回 API 的服务调用的数据 但出现此错误 错误 错误 找不到类型为 object 的不同支持对象 object Object NgFor 仅支持绑定到 Iterabl
  • Python方法解析之谜

    我不明白为什么这个程序失败了 usr bin env python from future import division print function from future builtins import import types im