python中的类其实是一个对象。这就是为什么在类中定义的属性,在所有对象中通用。也就是说类A中有number这个属性,默认值是0。实例1修改number为5后。实例2,再获取number这个属性,就是5。这和Swift以及OC不一样。
创建一个类有两种方法
- 使用关键字 class
- 使用type函数
class TestClass(object):
pass
def testAction(self):
print "testAction---%s" %self.name
TestClass2 = type('TestClass2',(TestClass1,),{'testAction':testAction, 'name':'yhl'})
#注意这里的 TestClass 必须继承object类
print TestClass2
类方法,关键字 @classmethod
@classmethod
def test3Action(cls):
print 'test3Action %s' %cls
静态方法,关键字@staticmethod
@staticmethod
def test2Action():
print "test2Action"
元类
元类是创建类的类
类是创建实例的对象
type就是一个元类,所以他可以创建其他的类
yhl = 100
print yhl.__class__
print yhl.__class__.__class__
#打印结果
<type 'int'>
<type 'type'>
metaclass属性
你首先写下 class Foo( object),但是类Foo还没有在内存中创建。 Python
会在类的定义中寻找metaclass属性,如果到了, Python就会用它来
创建类Foo,如果没有找到,就会用内建的type来创建这个类
现在的问题就是,你可以在 metaclass中放置些什么代码呢?
答案就是:可以创建一个类的东西。那么什么可以用来创建一个类呢?type,或者任何使用到ype或者子类化type的东东都可以。
网友评论