Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 Jinja2中的.render()是否与同名函数冲突?为什么?_Python_Google App Engine_Jinja2 - Fatal编程技术网

Python Jinja2中的.render()是否与同名函数冲突?为什么?

Python Jinja2中的.render()是否与同名函数冲突?为什么?,python,google-app-engine,jinja2,Python,Google App Engine,Jinja2,我正在学习Udacity的web开发课程,在该课程中,讲师将以下代码用于其处理程序类: 如您所见,他在render_str中调用.render**params。我最近发现.render是一个内置的Jinja2函数,因此它提出了一个问题:为什么内置的.render与自定义render不冲突:?如何将函数命名为与内置函数相同的名称,并且在同一类中使用它们时不会遇到问题?这不是函数,这是类方法。您有self.render和t.render。两个名称相同但属于不同对象的方法。好的,我明白了,如果我想调用

我正在学习Udacity的web开发课程,在该课程中,讲师将以下代码用于其处理程序类:


如您所见,他在render_str中调用.render**params。我最近发现.render是一个内置的Jinja2函数,因此它提出了一个问题:为什么内置的.render与自定义render不冲突:?如何将函数命名为与内置函数相同的名称,并且在同一类中使用它们时不会遇到问题?

这不是函数,这是类方法。您有self.render和t.render。两个名称相同但属于不同对象的方法。好的,我明白了,如果我想调用第三个方法render,我会在它前面加上self.render。否则,渲染默认为内置的Jinja方法。谢谢各位。那很容易。
class Handler(webapp2.RequestHandler):
    def write(self, *a, **kw):
        self.response.out.write(*a, **kw)

    def render_str(self, template, **params):
        t = jinja_env.get_template(template)
        return t.render(**params)

    def render(self, template, **kw):
        self.write(self.render_str(template, **kw))