一、通过__init__构造方法赋值
import types
class C:
sex = 'male'
def __init__(self, age):
self.age = age
def show(self):
return self.age
cla = C(21)
print('用构造函数添加属性', cla.show(), sep=":")
print('通过实例查看属性:', cla.age, cla.sex)
cla.name = 'Z1'
print('通过实例增加属性后,查看实例的属性:', cla.name)
C.name = 'Z2'
print('通过类增加属性后,查看类的属性:', C.name)
二、assert与isinstance结合判断参数类型
1.传参为float型
class test():
def __init__(self,name):
assert isinstance(name,str),'name must be string'
self.name=name
t2=test(1.1)
2.传参为string类型
t=test('ZZZ')
三、MethodType动态绑定类方法
1.绑定在实例s1上,调用方法
from types import MethodType
def setAge(self,age):
self.age=age
class Student(object):
pass
print('MethodType动态增加方法'.center(50, '-'))
s1=Student()
s1.setAge=MethodType(setAge,s1)
s1.setAge(21)
print('绑定在实例上:',s1.age)
2.增加实例s2,调用方法,错误。因为绑定在s1上,s2没有绑定。
s2=Student()
s2.setAge(22)
3.绑定在类上,两个实例都可调用方法
from types import MethodType
def setAge(self,age):
self.age=age
class Student(object):
pass
print('MethodType动态增加方法'.center(50, '-'))
s1=Student()
Student.setAge=MethodType(setAge,Student)
s1.setAge(21)
print('绑定在类上:',s1.age)
s2=Student()
s2.setAge(22)
print('绑定在类上:',s2.age)