类与对象
类是多个类似事物组成的群体的统称,能够帮助我们快速理解和判断事物的性质。
不同的数据类型属于不同的类。
python中一切皆对象。类就是统称,一类物品的统称。实例就是一个具体存在特指的一个事物。相似的实例就可以归到同一类中。
类的创建
类中所有实例都存在使其区别于其他类的共同点,共同点可以细分为属性(what),描述事物性质和方法(how),描述事物能做什么。
Python中,每个类都有自己的独特的属性attribute和方法method,是这个类的所有实例都共享的。换言之,每个实例都可以调用类中所有的属性和方法。在Python中,各个类的属性与方法需要我们自行创建
类的组成
class Student():
profession = '学生' # 类属性:直接写在类里的变量,称为类属性
# 初始化方法
def __init__(self,name,age):
self.name=name # 实体属性,进行了赋值操作,将局部变量的值赋给实体属性
self.age=age
# 实例方法
def study(self):
print('我周一至周五上课。')
# 静态方法,使用类名可直接访问,调用直接用Student.method()
@staticmethond
def method(): # 静态方法中不写self参数
print('使用了staticmethod进行修饰,所以我是静态方法')
# 类方法,使用类名就可以访问,调用直接用Student.cm()
@classmethod
def cm(cls): # 需传入cls参数
print('使用了classmethod进行修饰,所以我是静态方法')
类的实例化
class Student():
profession = '学生' # 类属性:直接写在类里的变量,称为类属性
# 初始化方法
def __init__(self,name,age):
self.name=name # 实体属性,进行了赋值操作,将局部变量的值赋给实体属性
self.age=age
# 实例方法
def study(self):
print('%s周一至周五上课。'%self.name)
# 创建Student类的对象
stu1=Student('小明',26)
stu1.study()
print(stu1.name) # 调用类属性: 实例名.属性名
print(stu1.age) # 调用类方法: 实例名.方法名()
print(stu1.profession)
小明周一至周五上课。
小明
26
学生
动态绑定属性和方法
python是动态语言,在创建对象后,可以动态地绑定属性和方法。
class Student():
def __init__(self,name,age):
self.name=name
self.age=age
def eat(self):
print('%s今天吃肉'%self.name)
stu1=Student('小小',15)
stu2=Student('大大',20)
stu2.gender='female' # 动态绑定属性
print(stu2.gender)
stu1.eat()
stu2.eat()
female
小小今天吃肉
大大今天吃肉
def change(): # 定义在类之外的,是函数
print('不,今天吃蔬菜')
stu2.change=change # 动态绑定方法
stu2.change()
不,今天吃蔬菜