开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情
大家都这样,面向对象有三大特性,分别是封装,继承和多态。Python作为面向对象的一个编程语言。这三大特性在拍摄中也有体现。所谓封装就是把属性和方法写在类里面,这一过程我们称之为封装。继承我们在上篇文章中学了子类继承父类,子类还可以重写父类的属性和方法。Python中的多态和Java中的差不多,Java的多态指的是同一行为具有不同的表现形式,Java多态存在需要满足三个条件,一是存在继承,二是方法的重写,三是父类的引用指向子类对象,这一点可能不太好理解,举个例子,比如这样:Parent p = new Child(); 这就是父类的引用指向了子类对象,Python中的多态同样需要满足这三个条件。
类属性
我们之前的文章中说道,属性可以在类内添加和获取,也可以在类外添加或获取,如果在类内添加的话,这个属性在创建的实例对象中都存在,并且如果修改值的话修改的也是实例对象的值,类内的属性值不会发生变化。
类方法
除了能够定义类属性之外,还可以定义类方法,类方法的定义是在方法上添加注解@classmethod,同时方法的第一个参数为类对象,用cls来表示,举个例子:
class Ikun(object):
__skill = '唱跳rap'
@classmethod
def get_skill(cls):
return cls.__skill
ikun = Ikun()
print(ikun.get_skill())
这里定义了个类属性是__skill,同时定义了类方法为get_skill()方法返回私有属性,一般类方法和类属性结合在一起使用。
静态方法
Python中也存在静态方法,静态方法和Java差不多,只是表现形式不同,静态函数的定义是在方法上添加注解@staticmethod,调用静态函数的时候既可以使用对象又可以使用类
class Ikun(object):
@staticmethod
def info_print():
print('我会唱《鸡你太美》')
ikun = Ikun()
ikun.info_print()
Ikun.info_print()
这里在Ikun类中定义了静态方法info_print,然后创建了一个ikun对象,我们既可以使用对象来调用这个静态方法又可以使用类来调用。
小结
行文至此,我们总结一下,这篇文章我们讲了Python的多态,Python的类的属性和方法,以及Python中如何定义静态方法,如何调用静态方法,希望对你有所帮助。