与Java一样,Python中也存在类的概念,使用类几乎可以模拟任何东西。
一、创建和使用类
我们创建一个简单的学生类----它不表示特定的学生,它可以表示任何学生。对于学生,我们知道学生
拥有一个学号,这是没有重复的,学生有名字、年龄;我们还知道学生可以有学习、运动这些行为。
根据以上描述,我们创建学生类。
student.py
1 class Student(): 2 """模拟学生""" 3 def __init__(self,name,age): 4 """初始化name 和 age 属性""" 5 self.name = name 6 self.age = age 7 8 def study(self): 9 """模拟学生学习""" 10 print(self.name.title() + " is studying.") 11 12 def sport(self): 13 """模拟学生运动""" 14 print(self.name.title() + " is sports.")
解释:
方法 __init__():类中的函数称为方法,方法等价于函数,叫法不同而已,此方法是一个特殊的方法,每当你根据Student类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,意在避免Python默认方法与普通方法发生名称冲突。
我们将方法__init__()定义包含三个形参:self、name、age。在这个方法的定义中形参self 必不可少,为何?因为Python在调用者方法创建实例时,将自动传入实参 self。每个与类相关联的方法都自动传递实参self,它是指向实例本身的引用,让实例能够访问类中的属性和方法。我们创建Student实例时,Python将调用此方法,我们将通过实参向Student() 传递名字和年龄;self会自动传递,因此我们不需要传递它。每当我们根据Student类创建实例时,都只需要给最后两个形参(name和age)提供值。
第5、6行代码,定义的两个变量都有前缀self 。以self 为前缀的变量都可供类中所有的方法使用,我们还可以通过类的任何实例来访问这些变量。self.name = name 获取存储在形参name 中的值,并将其存储到变量name 中,然后该变量被关联到当前创建的实例。self.age = age 与此类似。
Student类中还定义了其他两个方法:study和sport。由于这些方法不需要额外的信息,因此它们只有一个形参self。
二、根据类创建实例
1 class Student(): 2 """模拟学生""" 3 def __init__(self,name,age): 4 """初始化name 和 age 属性""" 5 self.name = name 6 self.age = age 7 8 def study(self): 9 """模拟学生学习""" 10 print(self.name.title() + " is studying.") 11 12 def sport(self): 13 """模拟学生运动""" 14 print(self.name.title() + " is sports.") 15 16 stu = Student('joker',18) 17 print("stu's name is " + stu.name) 18 print("stu's age is " + str(stu.age)) 19 stu.study() 20 stu.sport()
console:
解释:
第16 行即创建Student实例,将姓名和年龄传入,并用变量stu接收这个实例,然后可用stu访问实例中的属性,如17、18行,然后我们也可以调用方法,如19、20行。
可以创建多个实例,用不同的变量名接收即可,如:
stu1 = Student('jack','19') stu2 = Student('nacy',18)
访问其属性和调用方法与stu 类似。
放弃这俩字,说起来简单,做起来就更简单了