Python Object Programming 构建可重用和灵活的代码
更新时间:2023-11-06Python Object Programming 构建可重用和灵活的代码
1. 类与实例
在Python中,类是用于定义对象的模板,而实例则是基于类创建的具体对象。通过定义类和实例,可以使代码更加可重用和灵活。
class Person: def __init__(self, name, age): self.name=name self.age=age def say_hello(self): print("Hello, my name is", self.name, "and I am", self.age, "years old.") p=Person("Jack", 30) p.say_hello()
上面的代码定义了一个Person类,它有一个构造函数和一个say_hello方法。通过创建一个Person实例p,可以调用其方法say_hello来打印出“Hello, my name is Jack and I am 30 years old.”的输出。
2. 继承
继承是一种类与类之间关系的表达方式,它可以用来提高代码的可维护性和可重用性。在Python中,子类可以从父类继承属性和方法,并且可以添加新的方法或者覆盖父类方法。
class Animal: def __init__(self, name, age): self.name=name self.age=age def eat(self): print(self.name, "is eating.") class Dog(Animal): def bark(self): print(self.name, "is barking.") d=Dog("Bob", 5) d.eat() d.bark()
上面的代码定义了Animal类和Dog类,Dog类继承了Animal类的构造函数和eat方法,并添加了一个新的方法bark。通过创建一个Dog实例d,可以调用其方法eat和bark。
3. 多态
多态意味着对象可以根据上下文的不同而表现出不同的行为。在Python中,多态可以通过继承和方法重写来实现。
class Shape: def area(self): pass class Square(Shape): def __init__(self, side): self.side=side def area(self): return self.side * self.side class Circle(Shape): def __init__(self, radius): self.radius=radius def area(self): return 3.14 * self.radius * self.radius shapes=[Square(4), Circle(3)] for shape in shapes: print(shape.area())
上面的代码定义了Shape、Square和Circle三个类,并在Shape类中定义了一个抽象方法area。Square类和Circle类继承了Shape类的area方法并分别实现了自己的计算面积的逻辑。通过创建Square和Circle实例,并将它们分别存储到shapes列表中,最后遍历shapes列表,调用每个对象的area方法来计算它们的面积。
4. 特殊方法
Python中的特殊方法是以双下划线开头和结尾的方法,它们可以用来实现不同的功能。比如__init__方法是用于对象初始化的,__str__方法是用于打印对象的字符串表示等等。
class Point: def __init__(self, x, y): self.x=x self.y=y def __str__(self): return "({0}, {1})".format(self.x, self.y) p=Point(1, 2) print(p)
上面的代码定义了一个Point类,它有一个构造函数和一个__str__方法。通过创建一个Point实例p,可以调用print函数来打印出“(1, 2)”的输出,这是因为它调用了对象的__str__方法来获取对象的字符串表示。