gpt4 book ai didi

c++ - 定义类时执行什么代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:54 24 4
gpt4 key购买 nike

当我导入一个包含类的模块时,在第一次读取该类并创建类对象时执行什么代码?我有什么办法可以影响发生的事情吗?


编辑:我意识到我的问题可能有点过于笼统......

我正在寻找更底层的东西,它可以让我从 C++ 进行内省(introspection)。我用 Python 扩展了我的 C++ 应用程序。我有一些在 C++ 中定义并在 Python 中公开的类。用户可以在脚本中继承这些类,我希望能够在它们首次定义时获取有关它们的详细信息。

最佳答案

许多可能的事情都可能发生。最基本的:

class block 的内容在首次读取时执行。

要查看实际效果,请看这个示例:

class Foo(object):
print "bar"

def __init__(self):
print "baz"

导入模块时将打印bar

如果一个类定义了元类,则元类 __new__ 函数将在类代码块运行后运行。

例子:

class MyMeta(type):
def __new__(mcs, name, bases, kwargs):
print "I'm the metaclass, just checking in."
return type.__new__(mcs, name, bases, kwargs)


class Foo(object):
__metaclass__ = MyMeta

print "I'm the Foo class"

输出:

I'm the Foo class
I'm the metaclass, just checking in.

我相信其他位也可以运行,这些正是我所熟悉的。

关于c++ - 定义类时执行什么代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7941660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com