在Python中添加__init __()中的方法

时间:2017-07-24 12:34:30

标签: methods python-3.6

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

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

1 个答案:

答案 0 :(得分:2)

如果使用方法(例如

)在Python中创建一个类
class A
    def method(self, param1, param)

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

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