c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python Object Programming 构建可重用和灵活的代码

更新时间:2023-11-06

Python 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__方法来获取对象的字符串表示。