繁体   English   中英

我们可以使用 Object 面向设计定义所有或大多数数学概念吗?

[英]Can We Define Every or Most Mathematical Concepts Using Object Oriented Design?

数学有很多概念和概念的定义。 比如“集合”是一个基本的数学概念,在大多数编程语言中它是由集合 class 定义的。 虽然这些数学概念具有属性,但我们可以从这些基本属性中推导出其他属性。 我开始怀疑是否可以使用面向对象编程来定义所有或大部分数学概念? 这样我们最终就可以将数学教科书翻译成面向对象的程序。 例如,这是 Measure Theory 中几个定义的 OOP 表示:

class Event:
    def __init__(self, probability, name):
        self.probability = probability
        self.name = name


    def __repr__(self):
        return f"{self.name} has probability {self.probability}"


    def __setattr__(self, key, value):
        if key == 'probability' and value >1:
            raise Exception('Probability must be smaller than 1')
        super().__setattr__(key, value)

class Events(set):
    def add(self, *args):
        for arg in args:
            if not isinstance(arg,Event):
                raise TypeError('You should add Event')
        else:
            super(Events, self).add(*args)

    def probability(self):
        result = 0
        for event in self:
            result += event.probability
        return result


class Space(Events):
    def __init__(self, seq=()):
        total_probability = 0
        for arg in seq:
            total_probability += arg.probability
        if total_probability != 1:
            raise Exception('This space is not complete')
        else:
            super(Space, self).__init__(seq)

暂无
暂无

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

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