面向对象编程之动态创建一个类
八股文如下:
描述
type() 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象。
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
语法
以下是 type() 方法的语法:
type(object) type(name, bases, dict)
参数
- name -- 类的名称。
- bases -- 基类的元组。
- dict -- 字典,类内定义的命名空间变量。
返回值
一个参数返回对象类型, 三个参数,返回新的类型对象。
直接上代码吧!!
首先简单的进行以下总结!!
①类是由type产生的,type是所有类的祖师爷!!
②type方法可以动态的创建一个类
③type=('类名',(继承什么类,继承类2,....),{属性:类变量--key : value})
'''
类是由type产生的,type是所有类的祖师爷!!
type方法可以动态的创建一个类
type=('类名',(继承什么类,继承类2,....),{属性:类变量--key : value})
问题1:如何在type方法中创建一个复杂的变量?
答:可以通过自定义函数,在放入type方法中,即可完成实例属性的创建
'''
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
p1=Person('小李',12)
print(type(p1))
#对于Person 来说 类的属性都是type,故我们可以使用type去动态的创建一个类
print(type(Person))
Student=type('Student',(Person,),{'role':'student','classs':'english'})
print(Student)
s1=Student('man','小李',11)
print(s1.sex,s1.name,s1.age,s1.role,s1.classs)
print(type(s1))
print(type(Student))
问题1:如何在type方法中创建一个复杂的变量?
答:可以通过自定义函数,在放入type方法中,即可完成实例属性的创建
'''
类是由type产生的,type是所有类的祖师爷!!
type方法可以动态的创建一个类
type=('类名',(继承什么类,继承类2,....),{属性:类变量--key : value})
问题1:如何在type方法中创建一个复杂的变量?
答:可以通过自定义函数,在放入type方法中,即可完成实例属性的创建
'''
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
p1=Person('小李',12)
print(type(p1))
#对于Person 来说 类的属性都是type,故我们可以使用type去动态的创建一个类
print(type(Person))
def __init__(self,sex,name,age):
super(Student,self).__init__(name,age)
#super().__init__(name,age)
self.sex=sex
Student=type('Student',(Person,),{'role':'student','classs':'english','__init__':__init__})
print(Student)
s1=Student('man','小李',11)
print(s1.sex,s1.name,s1.age,s1.role,s1.classs)
print(type(s1))
print(type(Student))