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)

在這裏插入圖片描述

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