Python是一门动态语言,再创建对象后可以动态的绑定属性和方法
class Students:
def __init__(self,name,subject):
self.name=name
self.subject=subject
def sleep(self):
print('刚睡醒,困死我了')
stu1=Student('张三','语文')
stu2=Student('李四','数学')
stu3=Student('王五','英语')
print(stu1.name,stu1.subject)
一个类可以创建n多个关于这个类的实例对象,并且每个实例对象的属性值可以相同/不同
(1)动态绑定属性
接下来如果要在stu2中增加一个性别属性,则就可以使用动态绑定属性方法,方法很简单,直接实例对象名称.变量名=某个值
print('--------在stu2中动态绑定属性:性别为女----------')
stu2.gender='女' #动态绑定属性
print(stu1.name,stu1.subject)
print(stu2.name,stu2.subject,stu2.gender)
--------在stu2中动态绑定属性:性别为女----------
张三 语文
李四 数学 女
这里查看stu1的gendet属性时就会报错,因为gender属性是在创建完实例对象后 单独为stu2绑定的属性
print(stu1.gender) #AttributeError: 'Students' object has no attribute 'gender'
在上面的代码中,name和subject是stu1和stu2共同具有的属性,这两个变量从init初始化方法中传入的参数(self.name、self.subject是后面创建的所有实例对象所共有的)
(2)动态绑定方法
def show():
print('定义在类之外的叫做函数')
#将在外面定义好的方法绑定到stu1上
stu1.show=show #在stu1实例对象中声明stu1.show变量
stu1,show()
stu2.show() #show()原本在外面叫做函数,现在绑定到实例对象stu1上就变成了show方法