读取 json 个数据条目作为 python 文件中的对象

Read json data entries as objects in python file

我想在 python 中使用 SOLID 原则解决 fizzbuzz 问题 我写了这段代码:

class tester(object):
    def check(self, number, string):
        return ", ".join(self.check_numbers(number, string))

    def check_numbers(self, number, string):
        number_list = []
        for n in range (1, 101):
            if n%number==0:
                number_list.append(string)
            else:
                number_list.append(str(n))
        return number_list

效果很好。当我 运行 代码时,我通过以下方式创建一个对象:em = tester() 然后调用检查函数,如:em.check(3, "Fizz")

他们说:规则应该是对象,这样我就可以 add/register 将它们动态地或通过依赖注入 add/register 给规则执行器 我想到 JSON 文件来存储所有规则并将它们作为 .py 文件中的对象读取,但我卡住了。

有什么帮助吗?

我终于找到了解决方案,它是:

from collections import namedtuple

def is_divisible(number, modulo):
   return number % modulo == 0

FizzBuzz = namedtuple('FizzBuzz', 'number, name')

fizz_buzz_words = [
    FizzBuzz( 3, 'Fizz'),
    FizzBuzz( 4, 'Buzz'),
    FizzBuzz( 7, 'Bang'),
    FizzBuzz(11, 'Boom'),
 ]

def to_fizz_buzz_string(n):
    fizz_buzzes = [fb.name for fb in fizz_buzz_words if is_divisible(n, 
    fb.number)]

    return ''.join(fizz_buzzes) if fizz_buzzes else str(n)

for a in range(124, 134):
    print to_fizz_buzz_string(a)

print ', '.join(to_fizz_buzz_string(n) for n in range(923, 935))