Movatterモバイル変換


[0]ホーム

URL:


Sorry, we no longer support your browser
Please upgrade toMicrosoft Edge,Google Chrome, orFirefox. Learn more about ourbrowser support.
Skip to main content
Stack Overflow
  1. About
  2. For Teams
Loading…
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

You are notlogged in. Your edit will be placed in a queue until it ispeer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

Required fields*

What are metaclasses in Python?

What aremetaclasses? What are they used for?

Answer*

Draft saved
Draft discarded
Cancel
26
  • 80
    It appears that in Djangomodels.Model it does not use__metaclass__ but ratherclass Model(metaclass=ModelBase): to reference aModelBase class which then does the aforementioned metaclass magic. Great post! Here's the Django source:github.com/django/django/blob/master/django/db/models/…CommentedApr 12, 2017 at 13:18
  • 40
    <<Be careful here that the__metaclass__ attribute will not be inherited, the metaclass of the parent (Bar.__class__) will be. IfBar used a__metaclass__ attribute that createdBar withtype() (and nottype.__new__()), the subclasses will not inherit that behavior.>> -- Could you/someone please explain a bit deeper this passage?CommentedApr 25, 2017 at 21:32
  • 37
    @MaxGoodridge That's the Python 3 syntax for metaclasses. SeePython 3.6 Data model VSPython 2.7 Data modelCommentedJun 13, 2017 at 13:22
  • 32
    Now you wonder why the heck is it written in lowercase, and not Type? - well because it's implemented in C - it's the same reason defaultdict is lowercase while OrderedDict (in python 2) is normal CamelCaseCommentedSep 29, 2017 at 10:47
  • 35
    It's a community wiki answer (so, those who commented with corrections/improvements might consider editing their comments into the answer, if they're sure they are correct).CommentedNov 8, 2017 at 8:59
 |  Show21 more comments
How to Edit
  • Correct minor typos or mistakes
  • Clarify meaning without changing it
  • Add related resources or links
  • Always respect the author’s intent
  • Don’t use edits to reply to the author
How to Format
  • create code fences with backticks ` or tildes ~
    ```
    like so
    ```
  • add language identifier to highlight code
    ```python
    def function(foo):
        print(foo)
    ```
  • put returns between paragraphs
  • for linebreak add 2 spaces at end
  • _italic_ or**bold**
  • indent code by 4 spaces
  • backtick escapes`like _so_`
  • quote by placing > at start of line
  • to make links (use https whenever possible)
    <https://example.com>
    [example](https://example.com)
    <a href="https://example.com">example</a>
How to Tag

A tag is a keyword or label that categorizes your question with other, similar questions. Choose one or more (up to 5) tags that will help answerers to find and interpret your question.

  • complete the sentence:my question is about...
  • use tags that describe things or concepts that areessential, not incidental to your question
  • favor usingexisting popular tags
  • read the descriptions that appear below the tag

If your question is primarily about a topic for which you can't find a tag:

popular tags »


lang-py

[8]ページ先頭

©2009-2025 Movatter.jp