gpt4 book ai didi

python - 替代python中的函数指针

转载 作者:太空狗 更新时间:2023-10-29 19:32:46 26 4
gpt4 key购买 nike

我从事低级 C 编程工作多年,对面向对象的方法了解不多。在 C 中,如果我正在开发一些分层架构,那么每一层都有由函数指针定义的接口(interface)。整个层的优点是可以通过在初始化时将那些函数指针设置到另一层来替换。

我想要同样的东西,但这次是在 Python 中。实现这一目标的最酷方法是什么。为我的问题提供一些背景知识,我有一个数据生成器,可以将记录输出到不同的媒体。介质在配置时指定。我不想在这里使用 if 或 switch 语句。最好的方法是在 C 中使用函数指针,但在 Python 中可用的选项有哪些。也欢迎任何面向对象的方法。

谢谢

最佳答案

Python 支持将函数作为一流的数据类型。所以你可以这样做:

def foo(x):
print("foo: " + x)

def bar(x):
print("bar: " + x)

f = foo
f("one")
f = bar
f("ten")

打印

foo: one
bar: ten

这与您在 C 语言中使用函数指针的体验非常相似。虽然 Python 当然支持更精细的面向对象编程风格,但您没有义务使用它们。

一个使用类的示例,您可以在其中将相关函数组合在一起:

class Dog:
def noise(self, x):
print("bark! " + x)
def sleep(self):
print("sleeping on floor")

class Cat:
def noise(self, x):
print("meow! " + x)
def sleep(self):
print("sleeping on keyboard")

a = Dog()
a.noise("hungry")
a.sleep()

a = Cat()
a.noise("hungry")
a.sleep()

此版本打印:

bark! hungry
sleeping on floor
meow! hungry
sleeping on keyboard

关于python - 替代python中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14407181/

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