python_106_创建类的两种方式

class Foo(object):
    def __init__(self, name):
        self.name = name
f = Foo("alex")
print(type(f),type(Foo))#f的数据类型是class,Foo的数据类型是type
print(type(f))  # 输出:<class '__main__.Foo'>     表示,obj 对象由Foo类创建
print(type(Foo)) # 输出:<type 'type'>              表示,Foo类对象由 type 类创建
# f对象是Foo类的一个实例,Foo类对象是 type 类的一个实例,即:Foo类对象 是通过type类的构造方法创建。
# 那么,创建类就可以有两种方式:
# a). 普通方式
class Foo(object):
    def func(self):
        print('hello alex')
# b). 特殊方式
def func(self):
    print('hello  %s'%self.name)
def __init__(self,name,age):
    self.name=name
    self.age=age
Foo = type('Foo', (object,), {'talk': func,
                              '__init__':__init__})#object,即新式类后边的逗号不能去。(object,)可写成(),即:里边可以为空,写的是继承的类
#type第一个参数:类名
#type第二个参数:当前类的基类
#type第三个参数:类的成员
print(type(Foo))
f=Foo('qiqi',22)
f.talk()

So 记住,类是由 type 类实例化产生

原文地址:https://www.cnblogs.com/tianqizhi/p/8505048.html