在 Python 中的 __init__() 中添加方法

弗兰克·维尔

我正在制作类似但功能不同的类,具体取决于类的用途。

class Cup:
    def __init__(self, content):
        self.content = content

    def spill(self):
        print(f"The {self.content} was spilled.")

    def drink(self):
        print(f"You drank the {self.content}.")

Coffee = Cup("coffee")
Coffee.spill()
> The coffee was spilled.

然而,在对象的初始化过程中知道杯子是否会溢出或饮用。如果有很多杯子,则不需要所有杯子都具有这两种功能,因为只会使用其中一个。如何在初始化期间添加函数?

直觉上应该是这样的,但这显然不起作用:

def spill(self):
    print(f"The {self.content} was spilled.")

class Cup:
    def __init__(self, content, function):
        self.content = content
        self.function = function

Coffee = Cup("coffee", spill)
Coffee.function()
> The coffee was spilled
奇克

如果您在 Python 中使用方法创建一个类,例如

class A
    def method(self, param1, param)

它将确保当您调用A().method(x,y)self用 A 的实例填充参数。当您尝试在 之外自己指定方法时,class您还必须确保绑定正确完成。

import functools
class Cup:
    def __init__(self, content, function):
        self.content = content
        self.function = functools.partial(function, self)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:类中的 __init__

来自分类Dev

动态添加属性到python中的__init__方法

来自分类Dev

动态添加属性到python中的__init__方法

来自分类Dev

Python中的__init__自动运行方法

来自分类Dev

在Python中从__init__调用setter

来自分类Dev

在Python中从__init__调用setter

来自分类Dev

为什么__init__在python中失败

来自分类Dev

类作为python __init__中的参数

来自分类Dev

python中带有__init__的对象

来自分类Dev

python类的属性不在__init__中

来自分类Dev

如何使任何方法在Python中充当__init__?

来自分类Dev

__init__中的UnboundLocalError

来自分类Dev

在某些类的python中的__init__ def中获取变量

来自分类Dev

如何在 Python 中的 def __init__ 中检索变量

来自分类Dev

在python __init__中捕获许多args之一

来自分类Dev

在python的__init__中返回None的错误格式

来自分类Dev

在Python 3中扩展类并使用__init__构造它

来自分类Dev

从Python中的构造函数__init__内省参数

来自分类Dev

如何处理python __init__中缺少的参数?

来自分类Dev

杀死在Python的__init__类中创建的子进程

来自分类Dev

Python:将参数冻结到类__init__函数中

来自分类Dev

__init__文件无法在python中按预期工作

来自分类Dev

Python中的类是否需要__init__构造函数?

来自分类Dev

在python __init__中捕获许多args之一

来自分类Dev

Python,在__init__中获取self.request.get()的值

来自分类Dev

如何处理python __init__中缺少的args?

来自分类Dev

杀死在Python的__init__类中创建的子进程

来自分类Dev

__init__外的python中的libSBML分段错误

来自分类Dev

Python更改__init__中声明的变量值