【问题标题】:Using common class in Python for multiple files在 Python 中为多个文件使用公共类
【发布时间】:2020-10-19 16:41:31
【问题描述】:

我正在使用相同的类属性在不同文件中创建大量算法。

此类通过点击 tkinter 画布获取其属性。

class Algo: 
    def __init__(self, x, y): 
        self.x = x 
        self.y = y 


def callback(event):
    x, y = event.x, event.y
    return (Point(x, y))
    

目前我有一个使用此类的算法。
我计划在具有相同 Point 属性的其他文件中添加更多算法。

  1. 有没有办法让这些属性在不同文件的不同类之间通用?
  2. 最好只在单独的文件中创建一个类,而不对其他文件使用 OOP,将属性传递给函数?

【问题讨论】:

  • 您是否在不同模块之间共享构造以及使用 OOP 是两个不同的问题。我会为 Point 定义一个类(或命名元组或数据类)并将其导入多个模块中......主要是,如果你在一个名为 descartes.py 的文件中有Point = collections.namedtuple("Point", ["x", "y"])(例如)你可以做from descartes import Point,你会得到点。

标签: python class oop


【解决方案1】:

关于问题 1 a 部分:“有没有办法让这些属性在不同的类之间通用?”这只是简单的继承,如下所示。

就您担心您的类在不同文件中而言:

  1. 首先请注意,在 Python 中,每个文件都不需要 1 个类。
  2. 见小次郎的评论。
  3. 一般来说,访问文件之间的内容的方式是通过导入。
  4. 如果您想从其他地方定义的类继承,请导入该类。如果要使用在别处定义的函数,请导入该函数。但是,导入应该对您是否使用类的问题产生 0 影响。

c

class Pointed:
    def __init__(self, x, y):
        self.x=x
        self.y=y
     
class Algo(Pointed):
    def __init__(self, x, y, something_else):
        super().__init__(x, y)
        self.something_else = something_else
     
algo = Algo(3, 4, "hello world")
print(algo.x)
print(algo.y)
print(algo.something_else)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2013-06-03
    • 2011-04-04
    • 1970-01-01
    • 2023-04-07
    • 2012-07-17
    • 2017-07-25
    相关资源
    最近更新 更多