Python之class类和方法的用法详解
在Python中,class关键字用来定义类。类是面向对象编程中最重要的概念之一,它是一种数据类型,一个类可以包含多个方法和属性。类的实例化可以通过“对象 = 类名()”语句实现,其中“类名()”表示调用类的构造方法返回一个类的实例化对象。
定义和使用类
我们可以通过以下语法定义一个类:
class ClassName:
# 属性
variable = ""
# 方法
def function(self):
pass
其中class后面的名称即为类名,属性定义在方法外面,方法定义在方法内部。
下面是一个简单的例子,我们定义了一个Student类,其中包含了一个name属性和一个study方法:
class Student:
# 属性
name = ""
# 方法
def study(self, course):
print("{} is studying {}.".format(self.name, course))
我们可以通过以下语句实例化一个Student对象:
stu = Student()
然后我们可以设置其属性,并调用其方法:
stu.name = "Alice"
stu.study("Python")
输出结果为:
Alice is studying Python.
构造方法
构造方法是类的特殊方法之一,用于在实例化类的时候进行初始化操作。在Python中,构造方法以“init”为方法名,通过“self”参数传递类的实例化对象。
例如,我们可以为Student类添加如下构造方法:
class Student:
# 构造方法
def __init__(self, name):
self.name = name
# 方法
def study(self, course):
print("{} is studying {}.".format(self.name, course))
我们可以通过以下语句实例化一个Student对象:
stu = Student("Alice")
此时,stu的name属性已经被初始化为"Alice"。我们可以直接调用其study方法:
stu.study("Python")
输出结果为:
Alice is studying Python.
继承和多态
在面向对象编程中,继承是一种常见的概念。可以通过继承来实现类的复用。在Python中,可以通过在定义类时加上括号,并指定继承的父类来实现继承。例如:
class Teacher(Student):
# 方法
def teach(self, course):
print("{} is teaching {}.".format(self.name, course))
在上面的代码中,我们定义了一个Teacher类,它继承了Student类。现在,Teacher类不仅拥有Student类中的所有属性和方法,还新增了一个teach方法。
我们可以通过以下语句实例化一个Teacher对象:
teach = Teacher("John")
由于Teacher类继承了Student类,因此该对象的name属性已经被初始化为"John"。我们可以调用其study和teach方法,例如:
teach.study("Python")
teach.teach("Python")
输出结果为:
John is studying Python.
John is teaching Python.
多态是面向对象编程中的另一种重要概念。它可以在不同的继承类中实现相同的方法。例如,我们可以为Student类和Teacher类中的study方法提供不同的实现:
class Teacher(Student):
# 方法
def study(self, course):
print("{} is preparing to teach {}.".format(self.name, course))
def teach(self, course):
print("{} is teaching {}.".format(self.name, course))
现在,Teacher类中的study方法已被修改,我们可以通过以下语句实例化Teacher对象和Student对象:
stu = Student("Alice")
teach = Teacher("John")
对于这两个对象,我们都可以调用study方法,例如:
stu.study("Python")
teach.study("Python")
输出结果为:
Alice is studying Python.
John is preparing to teach Python.
示例说明
下面给出一个简单的示例说明,我们定义了一个Person类,其中包含了一个name属性和一个speak方法:
class Person:
# 构造方法
def __init__(self, name):
self.name = name
# 方法
def speak(self, content):
print("{} says '{}.'".format(self.name, content))
我们也可以定义一个Chinese类,它继承了Person类,并重写了speak方法:
class Chinese(Person):
# 重写方法
def speak(self, content):
print("{} says '{}.' in Chinese.".format(self.name, content))
现在,我们可以通过以下语句实例化一个Chinese对象:
c = Chinese("张三")
我们可以调用其speak方法:
c.speak("你好")
输出结果为:
张三 says '你好.' in Chinese.
另外一个例子是实现一个Shape类,其中包含一个获取面积的抽象方法:
import math
class Shape:
# 抽象方法
def area(self):
pass
class Circle(Shape):
# 构造方法
def __init__(self, radius):
self.radius = radius
# 重写抽象方法
def area(self):
return self.radius * self.radius * math.pi
这里的Shape类是一个抽象类(因为其中定义了一个抽象方法),无法进行实例化。我们定义了一个Circle类,它继承了Shape类,实现了一个面积的计算方法。我们可以通过以下语句实例化一个Circle对象:
c = Circle(5)
我们可以调用其area方法:
print(c.area())
输出结果为:
78.53981633974483
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python之class类和方法的用法详解 - Python技术站