python类的构造方法和assert的使用,用MethodType动态绑定类方法

一、通过__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)

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章