Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最佳python/Django代码生成器?_Python_Html_Django_Generator - Fatal编程技术网

最佳python/Django代码生成器?

最佳python/Django代码生成器?,python,html,django,generator,Python,Html,Django,Generator,很快的问题。我想知道是否有任何Django软件可以自动生成python编码。如果有,请告诉我。我从来没有听说过python代码生成器。Python是一种动态语言,您几乎可以在其中执行任何操作。与依赖Java世界中已知的静态代码生成器不同,我认为在大多数情况下,您可以编写两行等价的Python代码,这更方便 如果您正在寻找Python词法分析器,请尝试。我从未听说过Python代码生成器。Python是一种动态语言,您几乎可以在其中执行任何操作。与依赖Java世界中已知的静态代码生成器不同,我认为

很快的问题。我想知道是否有任何Django软件可以自动生成python编码。如果有,请告诉我。

我从来没有听说过python代码生成器。Python是一种动态语言,您几乎可以在其中执行任何操作。与依赖Java世界中已知的静态代码生成器不同,我认为在大多数情况下,您可以编写两行等价的Python代码,这更方便


如果您正在寻找Python词法分析器,请尝试。

我从未听说过Python代码生成器。Python是一种动态语言,您几乎可以在其中执行任何操作。与依赖Java世界中已知的静态代码生成器不同,我认为在大多数情况下,您可以编写两行等价的Python代码,这更方便


如果您正在寻找Python词法分析器,请尝试。

我在Python中看到的最接近代码生成的东西是Python的元类特性。例如,以下是创建只读属性的简单元类:

class ReadonlyProperties(type):
    def __init__(cls, name, bases, attrs):
        props = attrs.get("props",[])
        if props:
            # generate property for each name in propnames
            def defineProperty(p):
                return property(lambda self: getattr(self, '_'+p))
            for p,_ in props:
                setattr(cls, p, defineProperty(p))

            # generate wrapper for __init__ to initialize property values
            if "__init__" in attrs:
                setattr(cls, "__orig_init__", attrs["__init__"])
            else:
                setattr(cls, "__orig_init__", None)
            def new__init__fn(self, *args, **kwargs):
                if self.__orig_init__:
                    self.__orig_init__(*args)
                for p,pdefault in props:
                    if p in kwargs:
                        setattr(self, '_'+p, kwargs[p])
                    else:
                        setattr(self, '_'+p, pdefault)
            setattr(cls, "__init__", new__init__fn)

            # generate __str__ function
            def __repr__fn(self):
                return "%s(%s)" % (name, ','.join("%s=%s" % (p,getattr(self,p)) for p,_ in props))
            setattr(cls, "__repr__", __repr__fn)

            # don't need this class property any more
            delattr(cls, "props")
下面是正在运行的元类:

class Coord3D(object):
    __metaclass__ = ReadonlyProperties
    props = [('x',0), ('y',0), ('z',0)]

pt = Coord3D(x=100, y=200)
print repr(pt)
print pt.x
print [n for n in dir(pt) if not n.startswith('__')]
印刷品:

Coord3D(x=100,y=200,z=0)
100
['_x', '_y', '_z', 'x', 'y', 'z']

分配给pt.x将引发AttributeError,因为这是一个只读属性。

我在Python中看到的最接近代码生成的东西是Python的元类特性。例如,以下是创建只读属性的简单元类:

class ReadonlyProperties(type):
    def __init__(cls, name, bases, attrs):
        props = attrs.get("props",[])
        if props:
            # generate property for each name in propnames
            def defineProperty(p):
                return property(lambda self: getattr(self, '_'+p))
            for p,_ in props:
                setattr(cls, p, defineProperty(p))

            # generate wrapper for __init__ to initialize property values
            if "__init__" in attrs:
                setattr(cls, "__orig_init__", attrs["__init__"])
            else:
                setattr(cls, "__orig_init__", None)
            def new__init__fn(self, *args, **kwargs):
                if self.__orig_init__:
                    self.__orig_init__(*args)
                for p,pdefault in props:
                    if p in kwargs:
                        setattr(self, '_'+p, kwargs[p])
                    else:
                        setattr(self, '_'+p, pdefault)
            setattr(cls, "__init__", new__init__fn)

            # generate __str__ function
            def __repr__fn(self):
                return "%s(%s)" % (name, ','.join("%s=%s" % (p,getattr(self,p)) for p,_ in props))
            setattr(cls, "__repr__", __repr__fn)

            # don't need this class property any more
            delattr(cls, "props")
下面是正在运行的元类:

class Coord3D(object):
    __metaclass__ = ReadonlyProperties
    props = [('x',0), ('y',0), ('z',0)]

pt = Coord3D(x=100, y=200)
print repr(pt)
print pt.x
print [n for n in dir(pt) if not n.startswith('__')]
印刷品:

Coord3D(x=100,y=200,z=0)
100
['_x', '_y', '_z', 'x', 'y', 'z']

分配给pt.x将引发AttributeError,因为这是一个只读属性。

我们不要用尖刻的注释来运行新的pythonistas。。。也许OP有合理的代码生成需求

试试这些:


玩得开心

我们不要用尖刻的话来吓跑新的蟒蛇学家。。。也许OP有合理的代码生成需求

试试这些:


玩得开心

查看Django Builder。。。真的很酷。。。上传一个models.py文件,它会生成更好的models.py,还有CRUD视图模板、API/序列化程序、admin.py、url.py,甚至测试


查看Django Builder。。。真的很酷。。。上传一个models.py文件,它会生成更好的models.py,还有CRUD视图模板、API/序列化程序、admin.py、url.py,甚至测试


从什么生成代码?UML图,你不喜欢django admin StartProject你的用例是什么,你想做什么?这将更容易提出合理的解决方案。从什么生成代码?UML图,你不喜欢django admin StartProject你的用例是什么,你想做什么?这将使我们更容易提出合理的解决方案。好的建议,但不是他要求的。好的建议,但不是他要求的。感谢这个答案,即使现在已经很老了。我对Python相当陌生,由于我来自最近的Node/Angular背景,我不熟悉django/drf中的开发工作流程。感觉manage.py应该有更多类似于ng g的命令,但我想这是我需要习惯的。请欣赏这个答案,即使现在已经很老了。我对Python相当陌生,由于我来自最近的Node/Angular背景,我不熟悉django/drf中的开发工作流程。感觉manage.py应该有更多类似于ng g的命令,但我想这是我需要习惯的。