Justin-刘清政的博客

python/面向对象基础/7-对象的绑定方法

2020-12-21

一、对象的绑定方法

1
2
3
4
5
6
7
8
9
10
11
12
13
class OldboyStudent:
school = 'oldboy'

def __init__(self, name, age, gender):
self.name = name
self.age = age
self.sex = gender

def choose_course(self):
print(f'{self.name} choosing course')

def func(self):
print('from func')
  • 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
  • 对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性

二、类使用对象的绑定对象

1
2
3
4
5
6
stu1 = OldboyStudent('lqz', 18, 'male')
stu2 = OldboyStudent('sean', 17, 'male')
stu3 = OldboyStudent('tank', 19, 'female')

print(stu1.name)
print(stu1.school)
1
2
lqz
oldboy
  • 类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个
1
print(OldboyStudent.choose_course)
1
<function OldboyStudent.choose_course at 0x10558e840>
1
2
3
4
try:
OldboyStudent.choose_course(123)
except Exception as e:
print(e)
1
'int' object has no attribute 'name'

三、对象使用对象的绑定方法

  • 类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的,
  • 绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
1
2
3
4
print(id(stu1.choose_course))
print(id(stu2.choose_course))
print(id(stu3.choose_course))
print(id(OldboyStudent.choose_course))
1
2
3
4
4379911304
4379911304
4379911304
4384680000
1
2
3
print(id(stu1.school))
print(id(stu2.school))
print(id(stu3.school))
1
2
3
4380883688
4380883688
4380883688
1
print(id(stu1.name), id(stu2.name), id(stu3.name))
1
4384509600 4384506072 4384507864
1
stu1.choose_course()
1
lqz choosing course
1
stu2.choose_course()
1
sean choosing course
1
stu3.choose_course()
1
tank choosing course
  • 补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self
1
stu1.func()
1
from func
1
stu2.func()
1
from func
使用支付宝打赏
使用微信打赏

点击上方按钮,请我喝杯咖啡!

扫描二维码,分享此文章