类有两种属性:数据属性和函数属性
- 类的数据属性是所有对象共享的
- 类的函数属性是绑定给对象用的
一、属性的查找顺序
属性的查找顺序: 先从对象自身找
---> 类中找
---> 报错
二、给对象添加属性的两种方式
方式一:直接通过对象添加属性
class Student:
#变量表示属性
school='xxx'
def choose(self):
print("选课....")
def study(self):
print('学习')
# 实例化对象
stu1=Student()
stu1.name='xucheng' # 添加属性
方式二:通过__init__方法添加属性
class Student:
#变量表示属性
school='xxx'
def __init__(self,name): # 实例化对象会默认执行
self.name=name
def choose(self):
print("选课....")
def study(self):
print('%s学会了python'%self.name)
# 实例化对象是传递参数,通过init函数给对象添加属性
stu1=Student('xucheng')
stu1.study() # 添加属性
三、对象的绑定方法
对象的绑定方法就是定义在类内部的方法
- 类中定义的数据属性和函数属性都是共享给所有对象用的
- 对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性
当对象实例化后,使用对象调用类中的任一方法,都会将该对象传递给函数形参的self
表示当前对象。
init方法。初始化方法,和C++中的构造方法类似。当实例化对象时,进行传递参数,给当前对象添加属性。
对象的绑定方法都是对于本对象而言的类中的方法。当对象调回用类中方法时,忽略self
如果直接使用类来调用:就是一个普通函数,有几个参数就需要传几个参数
使用对象来调用:它叫对象的绑定方法,第一个参数不需要传,自动传递
# 直接使用类来调用
Student.choose(123)
print(Student.school)
# 对象来调用方法,第一个参数不用传
stu2=Student()
print(stu2.school)