metaclass

Metaclass not being called in subclasses

Here is a python session. >>> class Z(type): def __new__(cls, name, bases, attrs): print cls print name return type(name, bases, attrs) ... >>> class Y(object): __metaclass__ = Z ... <class '__main__.Z'> Y >>> class X(Y): ... pass ... >>> class W(Y): ... __metaclass__ = Z ... <clas...

python metaclasses vs class decorators

what are the main differences ? is there something i can do with one method but not with the other one ? ...

Inheriting methods from a metaclass

In the example enumeration code given in this question, reproduced below, why does TOKEN contain the implementations of __contains__ and __repr__ from the metaclass EnumerationType? from ctypes import * class EnumerationType(type(c_uint)): def __new__(metacls, name, bases, dict): if not "_members_" in dict: ...

python modify __metaclass__ for whole program

EDIT: Note that this is a REALLY BAD idea to do in production code. This was just an interesting thing for me. Don't do this at home! Is it possible to modify __metaclass__ variable for whole program (interpreter) in Python? This simple example is working: class ChattyType(type): def __init__(cls, name, bases, dct): print...

Is there any reason to choose __new__ over __init__ when defining a metaclass?

I've always set up metaclasses something like this: class SomeMetaClass(type): def __new__(cls, name, bases, dict): #do stuff here But I just came across a metaclass that was defined like this: class SomeMetaClass(type): def __init__(self, name, bases, dict): #do stuff here Is there any reason to prefer one ...

What does class_getClassVariable() do?

If instance variables belong to an instance of a class, class variables would belong to an instance of a metaclass, I should think. But my experience with the Objective-C metaclass tells me that this is unlikely. I'm wondering what class_getClassVariable does as opposed to class_getInstanceVariable, and why there is not a class_setClass...

What are Python metaclasses useful for?

What can be done with metaclasses that can't be in any other way? Alex Martelli told that there are tasks that can't be achieved without metaclasses here http://stackoverflow.com/questions/1779372/python-metaclasses-vs-class-decorators I'd like to know which are? ...

Smalltalk superclass vs metaclass ???

I new to OOP, but with a "procedural" background. I'm currently trying to get my head around OOP via GNU Smalltalk and Lovejoy's "Smalltalk: Getting The Message". I'm confused as to the the heck the metaclass and Metaclass class are, vs superclass. I can see the inheritance flow of superclass -> class -> subclass; but I don't see how/...

What is the relationship between the metaclass of Base and Derived class in Ruby?

In Ruby, we could use super within singleton method to call the corresponding super class's singleton method, like the following code shows. class Base def self.class_method puts "Base class method" end end class Derived < Base def self.class_method puts "Derived class method" super end end Derived.class_method # D...

Modifying a Python class

I'd like to modify all classes in Python. For example str and int and others like Person(object). I'd like to add an attribute to them and to change the way its methods works. Which is the best approach for this? Metaclasses? ...

Python: Problem with metaclasses in conjunction multiple inheritance

Hi, i have two questions converning metaclasses and multiple inheritance. The first is: Why do i get a TypeError for the class Derived but not for Derived2? class Metaclass(type): pass class Klass(object): __metaclass__ = Metaclass #class Derived(object, Klass): pass # if I uncomment this, I get a TypeError class OtherClass(ob...

How does the Objective-C runtime instantiate the root metaclass and other class descriptions?

I'm trying to implement a basic object-oriented ANSI C runtime and using Objective-C as a guide. They're seems to be three parts. A Class Description, Class Interface, and Class Implementation. In order for the Class Interface to be instantiated, the familiar method of using the Class object to instantiate one's object can only happen i...

Error when calling the metaclass bases: function() argument 1 must be code, not str

I tried to subclass threading.Condition earlier today but it didn't work out. Here is the output of the Python interpreter when I try to subclass the threading.Condition class: >>> import threading >>> class ThisWontWork(threading.Condition): ... pass ... Traceback (most recent call last): File "<stdin>", line 1, in <module> Type...

methods of metaclasses on class instances.

I was wondering what happens to methods declared on a metaclass. I expected that if you declare a method on a metaclass, it will end up being a classmethod, however, the behavior is different. Example >>> class A(object): ... @classmethod ... def foo(cls): ... print "foo" ... >>> a=A() >>> a.foo() foo >>> A.foo() foo ...

Groovy MetaClass - Add category methods to appropriate metaClasses

I have several categories that I use in my Grails plugin. e.g., class Foo { static foo(ClassA a,Object someArg) { ... } static bar(ClassB b,Object... someArgs) { ... } } I'm looking for the best way to add these methods to the meta-classes so that I don't have to use the category classes and can just invoke them as instance me...

Implementing the factory design pattern using metaclasses in python

I found a lot of links on metaclasses, and most of them mention that they are useful for implementing factory methods. Can you show me an example of using metaclasses to implement the design pattern? ...

Ruby metaclass madness

I'm stuck. I'm trying to dynamically define a class method and I can't wrap my head around the ruby metaclass model. Consider the following class: class Example def self.meta; (class << self; self; end); end def self.class_instance; self; end end Example.class_instance.class # => Class Example.meta.class # => Class Ex...

Python: Class factory using user input as class names

Hi everyone, I want to add class atttributes to a superclass dynamically. Furthermore, I want to create classes that inherit from this superclass dynamically, and the name of those subclasses should depend on user input. There is a superclass "Unit", to which I can add attributes at runtime. This already works. def add_attr (cls, na...

Should I use a metaclass, class decorator, or override the __new__ method?

Here is my problem. I want the following class to have a bunch of property attributes. I could either write them all out like foo and bar, or based on some other examples I've seen, it looks like I could use a class decorator, a metaclass, or override the __new__ method to set the properties automagically. I'm just not sure what the "...

class << self idiom in Ruby

I suppose my question is exactly what the subject depicts, what does: class << self do in Ruby? ...