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