绑定方法
class Student:
school = 'University of Technology'
count = 0
def __init__(self, x, y):
self.name = x
self.age = age
Student.count += 1
def choose_couse(self):
print('there is choosing course')
上一节我们已经知道类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
对象名称空间中定义的只有数据属性,而且是对象所独有的属性
stu1 = Student('zhangsan',18)
stu2 = Student('lisi', 19 )
print(stu1.name)
print(stu1.school)
我们之前就已经知道类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着使用时需要完全遵循函数的参数原则,该传几个值就传几个
print(Student.choose_course)
Student.choose_course(124563)
那么我们一直没有提及的是,类中定义的函数是否也可以共享给对象使用?是的,类中定义的函数可以共享给所有对象,而且是绑定给对象使用的
绑定的效果就为:绑定给谁,就应该由谁来调用,谁来调用就会将谁作为第一个参数自动传入
print(id(stu1.choose_course))
print(id(stu2.choose_course))print(id(stu1.school))
print(id(stu2.school))
补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self
类即类型
在python3中,统一了类与类型的概念,类就是类型
class Student:
school = 'University of Technology'
count = 0
def __init__(self, x, y): # 会在调用类时自动触发
self.name = x
self.age = age
Student.count += 1
def choose_couse(self):
print('%s choosing course'%self.name)
stu1 = Student('zhangsan' , 22)stu1.choose_course(1) #等价于Student.choose_course(stu1, 1)
我们以列表为例,深化类即类型这一概念
l=[1,2,3] # 等价于l=list([1,2,3])
print(type(l))
l.append(4) # 等价于list.append(l,4)
list.append(l,4)
print(l)