1 类模板操作
class obj:
pass
# print(obj)
x=obj()
# print(x)
#例1 类的内省
#通过类添加属性
obj.xname='张三'
b=hasattr(x,'xname')
print(b)
y=obj()
b=hasattr(x,'xname')
print(b)
# 通过类名赋值给另一个变量
xx=obj
#通过xx创建类对象
v1=xx()
print(v1.xname)
2 动态地创建类
2.1 type()函数
1)type(对象)函数返回对象的类型描述
v='88'
d=type(v)
print(str(d))
2)通过type()动态创建类
语法:类模板=type('类名',([父类a,父类b,..]),{属性名:})
class stu(object):
sname='张三男'
# def info(self):
# print('你好,{}'.format(self.sname))
#事先定义类中方法的模板
# def info(this):
# print('你好吗?{}'.format(this.sname))
# #动态生成的类模板
# typestu=type('Stu',(),{'sname':'张三男','say':info})
# #创建了类对象x
# x=typestu()
# print(x.sname)
# x.say()
3) 静态方法和类方法的区别
# 静态方法使用@staticmethod标识,不能使用参数表示当前类对象;类方法的第一个参数
# 代表类对象本身,可以使用@classmethod标识
class Stu:
age=None
#静态方法使用@staticmethod标识,不能使用参数表示当前类对象
@staticmethod
def ok1(self):
self+=8
#通过命名空间引用属性
Stu.age=self
return self
@classmethod
def ok2(self):
self.sname='apple'
# 创建了一个对象
s=Stu()
y=s.ok1(8)
print(s.age)
s.ok2()
print(s.sname)
class obj:
pass
# print(obj)
x=obj()
# print(x)
#例1 类的内省
#通过类添加属性
obj.xname='张三'
b=hasattr(x,'xname')
print(b)
y=obj()
b=hasattr(x,'xname')
print(b)
# 通过类名赋值给另一个变量
xx=obj
#通过xx创建类对象
v1=xx()
print(v1.xname)
2 动态地创建类
2.1 type()函数
1)type(对象)函数返回对象的类型描述
v='88'
d=type(v)
print(str(d))
2)通过type()动态创建类
语法:类模板=type('类名',([父类a,父类b,..]),{属性名:})
class stu(object):
sname='张三男'
# def info(self):
# print('你好,{}'.format(self.sname))
#事先定义类中方法的模板
# def info(this):
# print('你好吗?{}'.format(this.sname))
# #动态生成的类模板
# typestu=type('Stu',(),{'sname':'张三男','say':info})
# #创建了类对象x
# x=typestu()
# print(x.sname)
# x.say()
3) 静态方法和类方法的区别
# 静态方法使用@staticmethod标识,不能使用参数表示当前类对象;类方法的第一个参数
# 代表类对象本身,可以使用@classmethod标识
class Stu:
age=None
#静态方法使用@staticmethod标识,不能使用参数表示当前类对象
@staticmethod
def ok1(self):
self+=8
#通过命名空间引用属性
Stu.age=self
return self
@classmethod
def ok2(self):
self.sname='apple'
# 创建了一个对象
s=Stu()
y=s.ok1(8)
print(s.age)
s.ok2()
print(s.sname)