You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/language/learn-ql/python/statements-expressions.rst
+3-11Lines changed: 3 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -101,12 +101,10 @@ Each kind of Python expression has its own class. Here is the full class hierarc
101
101
- ``BoolExpr`` – Short circuit logical operations, ``x and y``, ``x or y``
102
102
- ``Bytes`` – A bytes literal, ``b"x"`` or (in Python 2) ``"x"``
103
103
- ``Call`` – A function call, ``f(arg)``
104
-
- ``ClassExpr`` – An artificial expression representing the right hand side a ``ClassDef`` assignment
105
104
- ``Compare`` – A comparison operation, ``0 < x < 10``
106
105
- ``Dict`` – A dictionary literal, ``{'a': 2}``
107
106
- ``DictComp`` – A dictionary comprehension, ``{k: v for ...}``
108
107
- ``Ellipsis`` – An ellipsis expression, ``...``
109
-
- ``FunctionExpr`` – An artificial expression representing the right hand side a ``FunctionDef`` assignment
110
108
- ``GeneratorExp`` – A generator expression
111
109
- ``IfExp`` – A conditional expression, ``x if cond else y``
112
110
- ``ImportExpr`` – An artificial expression representing the module imported
@@ -255,9 +253,9 @@ checks that the value of the attribute (the expression to the left of the dot in
255
253
Class and function definitions
256
254
------------------------------
257
255
258
-
As Python is a dynamically typed language, class, and function definitions are executable statements. This means that a class statement is both a statement and a scope containing statements. To represent this cleanly the class definition is broken into a number of parts. At runtime, when a class definition is executed a class object is created and then assigned to a variable of the same name in the scope enclosing the class. This class is created from a code-object representing the source code for the body of the class. To represent this the ``ClassDef`` class (which represents a ``class`` statement) subclasses ``Assign``. The right hand side of the ``ClassDef`` is a ``ClassExpr`` representing the creation of the class. The ``Class`` class, which represents the body of the class, can be accessed via the ``ClassExpr.getInnerScope()``
256
+
As Python is a dynamically typed language, class, and function definitions are executable statements. This means that a class statement is both a statement and a scope containing statements. To represent this cleanly the class definition is broken into a number of parts. At runtime, when a class definition is executed a class object is created and then assigned to a variable of the same name in the scope enclosing the class. This class is created from a code-object representing the source code for the body of the class. To represent this the ``ClassDef`` class (which represents a ``class`` statement) subclasses ``Assign``. The ``Class`` class, which represents the body of the class, can be accessed via the ``ClassDef.getDefinedClass()``
259
257
260
-
``FunctionDef``, ``FunctionExpr`` and ``Function`` are handled similarly.
258
+
``FunctionDef``, ``Function`` are handled similarly.
261
259
262
260
Here is the relevant part of the class hierarchy:
263
261
@@ -268,12 +266,6 @@ Here is the relevant part of the class hierarchy:
268
266
- ``ClassDef``
269
267
- ``FunctionDef``
270
268
271
-
- ``Expr``
272
-
273
-
- ``ClassExp``
274
-
275
-
- ``FunctionExpr``
276
-
277
269
- ``Scope``
278
270
279
271
- ``Class``
@@ -283,4 +275,4 @@ What next?
283
275
----------
284
276
285
277
- Experiment with the worked examples in the QL for Python tutorial topics: :doc:`Control flow <control-flow>`, :doc:`Points-to analysis and type inference <pointsto-type-infer>`.
286
-
- Find out more about QL in the `QL language handbook <https://help.semmle.com/QL/ql-handbook/index.html>`__ and `QL language specification <https://help.semmle.com/QL/QLLanguageSpecification.html>`__.
278
+
- Find out more about QL in the `QL language handbook <https://help.semmle.com/QL/ql-handbook/index.html>`__ and `QL language specification <https://help.semmle.com/QL/QLLanguageSpecification.html>`__.
0 commit comments