繁体   English   中英

在 OOP Python ZE5BA8B4C539C287BAAAEZ34

[英]What is the best way to use one function with same parameters in multiple classes in OOP Python tkinter

我试图弄清楚如何制作与两个类兼容的 function。 我有两个类的参数与另一个类完全相同,每个类都有更多参数。 而且我需要使用两个类中完全相同的 function。 有没有一种方法可以使用 function 而只挑战一次?

为了更清楚,这是我的情况。 我有一个带有表单Tkinter应用程序。 表单本身是 class ,但我也有一个 class ,它显示来自但默认填充和禁用的表单作为关于注册人的详细信息的显示。 单击按钮后,您可以更改该表单中的数据并在数据库中更新它。 因为这两个类非常相似,所以我使用命名和 class 形式的所有内容来构建人员详细信息 class。 但在这里我想调用验证 function。 提交和更新数据时将调用相同的 function。 在每个 class 中,它只需要self参数,但我不知道如何只定义一次并在两个类中使用它

在 python 和许多其他编程语言中一样,您可以创建子类,这些子类可以继承父 class 的一些属性(参数)和方法(函数)。 对于某些类共享相同元素的情况,Object 面向编程的最佳实践是创建一个父 class,它由您的两个子类继承,通过这样做,您可以向它们传递不同的参数,但只编写一次代码。

class parent:
    def __init__(self, first, second):
        self.first = first
        self.second = second

    def shared_method(self, *some_parameters):
        # This method is doing something useful
        pass


# by putting some class name in brackets you are inheriting all from that class
class child1(parent):

    def __init__(self, first, second, third):
        # keyword super lets you avoid referring to the base class explicitly and takes for you everything that is already in parent's __init__
        super().__init__(first, second)
        self.third = third  # and you can than define new attributes specific to that class


class child2(parent):

    def __init__(self, first, second):
        super().__init__(first, second)

    def new(self, x):
        pass

您接下来可以研究的一些高级内容是:如何创建抽象类,以便您只能从子类而不是父类创建对象,以及如何覆盖父类 class 的方法。

Object 面向编程(OOP)是编程中的一个大领域,但我希望我至少能帮助你入门并知道下一步该寻找什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM