Python 2 (. yani her şey nesne sınıfının türediği) birleşik bir nesne hiyerarşisi yoktur. Bu hiyerarşinin bir parçası olan herhangi bir şey sınıfı aracılığıyla çalınabilir, ancak bu şekilde değiştirilemez (veya hiç, gerçekten). Bunlara Python'un "türleri" denir ve bunlar C ile kodlanmışlardır. Türlerin örnekleri str, int, float, liste, tuple vs.'dir. Bu, türleri sınıflar ile aynı şekilde kullanamazsınız. Bir türün sınıfını değiştiremezsiniz, tür, vb. yöntemleri ekleyemez, kaldıramaz veya değiştiremezsiniz. Aşağıdaki transkript str (kodlanmış, dinamik olmayan C yapıları) gibi str sınıflar Ben A ve B aradım (değişken, dinamik, Python yapıları): yakından ilişkili
>>> str
<type 'str'>
>>> class A:
... pass
...
>>> a = A()
>>> A
<class __main__.A at 0xb747f2cc>
>>> a
<__main__.A instance at 0xb747e74c>
>>> type(a)
<type 'instance'>
>>> type(A)
<type 'classobj'>
>>> type(str)
<type 'type'>
>>> type(type(a))
<type 'type'>
>>> type(type(A))
<type 'type'>
>>> A.foo = lambda self,x: x
>>> a.foo(10)
10
>>> A().foo(5)
5
>>> str.foo = lambda self,x: x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'str'
>>> 'abc'.foo(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'foo'
>>> class B:
... pass
...
>>> a.__class__
<class __main__.A at 0xb747f2cc>
>>> a.__class__ = B
>>> a
<__main__.B instance at 0xb747e74c>
>>> 'abc'.__class__
<type 'str'>
>>> 'abc'.__class__ = B
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __class__ must be set to new-style class, not 'classobj' object
>>> class B(object):
... pass
...
>>> 'abc'.__class__ = B
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __class__ assignment: only for heap types
: http://stackoverflow.com/questions/990758/reclassing-an-instance-in-python – balpha
Ben Bu, "yığın tipi" teriminin çoğu Python programcıya aşina olmadığından ve Py dilinde herhangi bir yolun bulunmadığından, bu durumun yorumlayıcıdan oldukça kötü bir mesaj olduğunu söylemek ister. Örnekleri atanabilir __class__ sahip bir sınıf oluşturmak için 3 thon. Ya da en azından bir tane bulamadım. – holdenweb