- 类将函数和数据整洁地封装起来,让你能够灵活而高效地使用它们。
- 面向对象编程是最有效的软件编写方法之一。编写表示现实世界中的事物和情景的类,并基于这些类来创建对象,编写类时,定义一大类对象都有的通用行为,基于类创建的对象都自动具备这种通用行为,又可以根据需要赋予每个对象独特的个性,使用面向对象编程可模拟现实情景。
- 根据类来创建对象称为实例化,这让你能够使用类的实例。
- 使用类几乎可以模拟任何东西。
下面编写一个表示小狗的简单类Dog--它表示的不是特定的小狗,而是任何小狗。
对于大多数宠物狗,它们都有名字和年龄,大多数小狗还会蹲下和打滚,现在创建一个Dog类包含它们。这个类让python知道如何创建表示小狗的对象。编写这个类后,我们将使用它来创建表示特定小狗的实例。
9.1.1创建Dog类
"""根据Dog类创建的每个实例都将存储名字和年龄。我们赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力"""
"""根据约定,在python中首字母大写的名称指的是类。"""
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title()+"is now sitting")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title()+"roll over!")
"""
说明:
1.__innt__()为默认方法,每当根据Dog类创建新实例时,python都会自动运行它。
2.__innt__()中self形参必不可少,且必须位于其它形参前面。
因为在调用这个方法创建实例时,将自动传入实参self,每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性一和方法。
创建Dog类实例时,我们将通过实参向Dog类传递名字和年龄,self会自动传递,因此我们只需给量后形参(name和age)提供值。
3.以self为前辍的变量都可供类中的所有方法使用,也可以通过类的任何实例来访问这些变量。如self.name=name获取形参name中的值,
并将其存储到变量name中。像这样可以通过实例来访问的变量称为属性。
"""
9.1.2 根据类创建实例
可将类视为有关如何创建实例的说明。Dog类是一系列说明,让python知道中何创建表示特定小狗的实例。
下面来创建一个表示特定小狗的实例:
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title()+"is now sitting")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title()+"roll over!")
#下面来创建一个表示特定小狗的实例
my_dog=Dog("willie",6)
print("my dog's name is "+my_dog.name.title()+".")
print("my dog is "+str(my_dog.age)+"years old.")
运行结果:
>>>
================== RESTART: D:/python学习/第9章 类/9.1/Dog实例.py ==================
my dog's name is Willie.
my dog is 6years old.
>>>
1.访问属性
要访问实例的属性,可使用句点表示法。如:my_dog.name 访问my_dog的属性name的值。
2.调用方法
根据Dog类创建实例后,就可以使用句点表示法来调用Dog类中定义的任何方法。下面来让小狗蹲下和打滚。
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title()+"is now sitting")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title()+"roll over!")
"""根据Dog类创建实例后,就可以使用句点表示法来调用Dog类中定义的任何方法
下面来创建一个实例让小狗蹲下和打滚
"""
my_dog=Dog("willie",6)
my_dog.sit()
my_dog.roll_over()
运行结果及说明:
要调用方法,可指定实例的名称(这里是my_dog)和要调用的方法,并用句点分隔。
执行my_dog.sit()时,python在类Dog中查找方法sit()并运行其代码。
Willie按我们的命令做了: >>> ================== RESTART: D:/python学习/第9章 类/9.1/Dog实例2.py ================== Willieis now sitting Willieroll over! >>>
3. 创建多个实例
可按需求根据类创建任意数量的实例。下面再创建一个名为your_dog的实例:
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title()+"is now sitting")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title()+"roll over!")
"""根据Dog类创建实例后,就可以使用句点表示法来调用Dog类中定义的任何方法
下面来创建两个实例my_dog蹲下和your_dog打滚
"""
my_dog=Dog("willie",6)
your_dog=Dog("luky",3)
print("my dog's name is "+my_dog.name.title()+".")
print("my dog is "+str(my_dog.age)+"years old.")
my_dog.sit()
print("\n\n")
print("your dog's name is "+your_dog.name.title()+".")
print("your dog is "+str(your_dog.age)+"years old.")
your_dog.roll_over()
运行结果:
>>>
================== RESTART: D:/python学习/第9章 类/9.1/Dog实例3.py ==================
my dog's name is Willie.
my dog is 6years old.
Willieis now sitting
your dog's name is Luky.
your dog is 3years old.
Lukyroll over!
>>>
浙公网安备 33010602011771号