python面向对象---类的定义与实例化
python是一种面向对象编程语言,自然也有类的概念。python中的类通过class 关键字定义,提供了面向对象的所有标准特性,例如允许一个类继承多个基类, 子类可以覆盖父类的方法,封装,继承,多态 面向对象的三大特性python一样不少。
1.类的定义
定义一个类使用class关键字
class Stu:
def __init__(self, name, age):
self.name = name
self.age = age
def run(self):
print("{name} is running".format(name=self.name))
关于这段代码有很多新的概念需要你了解
1.1 类的名字
上面所定义的类的名字叫Stu,你可以使用Stu的__name__属性来访问它
print(Stu.__name__)
1.2 实例方法
在函数一章,你已经学习使用def来定义函数,在类里面,同样用def关键字来定义函数,但是我们管类里的函数叫方法,在这个示例中所有的方法都是实例方法,如不特殊说明,本教程中所说的方法均指实例方法。
1.3 初始化函数与实例属性
注意看这个方法
def __init__(self, name, age):
self.name = name
self.age = age
单词init是初始化的意思,__init__是初始化函数,当实例被构造出来以后,使用__init__方法来初始化实例属性。
name 和 age都是实例的属性,属性就是数据。说了半天实例,到底谁是实例,在类的方法里,self就是实例,如果你有其他编程语言的经验,python中的self等同于其他编程语言里的this。
2. 实例化
类是一种封装技术,我们把数据和方法都封装到了类里,如果你想使用数据和方法,那么你需要用类创建出一个实例来,这个过程就叫做实例化
class Stu:
def __init__(self, name, age):
self.name = name
self.age = age
def run(self):
print("{name} is running".format(name=self.name))
s = Stu('小明', 18)
s.run()
代码执行结果
小明 is running
s 就是创建出来的实例,s是类Stu的一个实例。在定义Stu的时候,要求实例必须有name和age属性,因此,在创建示例时,我们必须提供这些属性,按照__init__函数的参数列表传入'小明' 和 18。
s.run() 这行代码是在调用实例的run方法,不同于之前所学习的函数,类里的方法只能通过实例或者类来调用,调用的方式就如代码里演示的那样。
3. self是