介绍:
面向对象编程是一种非常有效的软件编写方法之一,在面向对象编程中,我们会编写表示现实世界中的事物或者情景的类,并基于类来创建对象。
在编写类的的时候,这些类对象一般都有通用的行为或者属性。基于类创建对象时,每个对象都自动具备这些属性和行为,然后给予需要给与这些对象一些特殊的属性或者行为。
我们几乎可以使用面向对象的方式来模拟现实生活中的所有情景。
根据类来创建队形被称为实例化,这让你能够使用类的实例。
创建类:
我们使用一个例子来说明怎么创建一个类。
我们假设创建一个名叫dog的类,我们知道狗狗一般会跑,叫,有些还会坐下,这些都是这个类的一些行为,我们也可以定义它的一些属性,比如名字和年龄。我们可以再代码中这样来实现这个类:
class Dog(): def __init__(self, name, age): self.name = name self.age = age def sit(self): print(self.name + " is sitting.") def run(self): print(self.name + " is running.") def bark(self): print(self.name + " is barking.")
在上面代码中我们可以看到,我们定义可一个dog类,在python的约定中,我们一般用首字母大写来表示类。
在定义好类的名字后,我们看到Python使用__init__来初始化类对象,就像一个构造函数一样。我们可以在这个函数方法中来初始化和定义我们需要的一些变量(属性),比如表示自身的self,表示名字的name,表示年龄的age。这些属性一旦定义好后,可以在类的方法中使用。当类被实例化成对象后,对象自动拥有这些属性。
这个类还被定义了一些方法,比如run,sit和bark,在这些方法中我们也可以看到,他可以自动的调用name,age等参数,因为他们已经是类的属性。
使用类:
根据类,我们可以创建和实例化一个对象。我们可以把dog类看做是一个对象的说明,而实例化的过程,实际就是根据说明创建一个对象的过程。
class Dog(): def __init__(self, name, age): self.name = name self.age = age def sit(self): print(self.name + " is sitting.") def run(self): print(self.name + " is running.") def bark(self): print(self.name + " is barking.") my_dog = Dog('WanCai', 5 )
我们可以看到,我们使用code:my_dog = Dog('WanCai', 5 ) 来实例化了一个叫wancai, 6岁的名叫my-dog的对象。
一旦实例化了一个对象,我们就可以调用这个对象的属性和方法:
my_dog = Dog('WanCai', 5 ) print(type(my_dog)) print("name is : " + my_dog.name) print("age is : " + str(my_dog.age)) my_dog.sit() my_dog.run() my_dog.bark() ''' 输出: <class '__main__.Dog'> name is : WanCai age is : 5 WanCai is sitting. WanCai is running. WanCai is barking. '''
一旦我们定义好了类,我们可以根据实际的需要来创建多个实例:
my_dog = Dog('WangCai', 5 ) print(type(my_dog)) print("name is : " + my_dog.name) print("age is : " + str(my_dog.age)) my_dog.sit() my_dog.run() my_dog.bark() rachel_dog = Dog('LaiFu', 5 ) print(type(rachel_dog)) print("name is : " + rachel_dog.name) print("age is : " + str(rachel_dog.age)) rachel_dog.sit() rachel_dog.run() rachel_dog.bark() ''' 输出: <class '__main__.Dog'> name is : WangCai age is : 5 WangCai is sitting. WangCai is running. WangCai is barking. <class '__main__.Dog'> name is : LaiFu age is : 5 LaiFu is sitting. LaiFu is running. LaiFu is barking. '''