python创建类mymath_Python类的创建、继承和导入

本文介绍了Python中的面向对象编程,包括如何创建和使用类、类的继承以及如何导入类。通过示例展示了如何定义Dog和Car类,以及ElectricCar作为Car的子类。还讲解了导入类的不同方法,如从同一目录、不同目录导入,以及使用sys.path调整搜索路径。
摘要由CSDN通过智能技术生成

面向对象编程是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情境的类,并基于这些类来创建对象。编写类时,你定义一大类对象都有的通用行为。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。使用面向对象编程可模拟现实情境。

关于类的创建、使用、继承和导入,具体方法如下:

以下的实例主要参考【Python编程从入门到实践 [美] Eric Matthes 著 袁国忠 译】这本书的第9章

然后加了一下自己的理解和其他不同的方法,若有侵权的行为发生,请告知,本人会立即删除。

创建和使用类:

直接上具体的列子,创建一个名为python_class_create的.py文件

1 #-*- coding: UTF-8 -*-

2

3 classDog():4 """关于狗的动作描述"""

5 def __init__(self, name, age):6 self.name =name7 self.age =age8

9 defrun(self):10 """小狗被命令跑"""

11 print(self.name.title() + "is now running.")12

13 defroll_over(self, color):14 """可以在这个函数中加上独特的属性"""

15 print(self.name.title() + "is a" + color + "'s dog, and it rolled over!")16

17 """对上述类的使用"""

18 my_dog = Dog('Lucy', 6)19 my_dog.run()20 my_dog.roll_over('black')

类的继承

编写类时,并非总是要从空白处开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类,它将自动获得另一个类的所有属性和方法;原有的类称为父类。而新类称为子类。子类继承了其父类的所有属性和方法。同时还可以定义自己的属性和方法。如下

先写一个父类,文件名称为python_superclass.py:

1 #-*- coding: UTF-8 -*-

2

3 classCar():4 """关于汽车的描述"""

5 def __init__(self, make, model, year):6 """初始化描述汽车的属性"""

7 self.make =make8 self.model =model9 self.year =year10 self.odometer_reading = 0 #给属性指定默认值

11

12 defget_descriptive(self):13 """返回描述性信息"""

14 long_name = str(self.year) + ' ' + self.make + ' ' +self.model15 returnlong_name.title()16

17 defread_odometer(self):18 """读取里程表"""

19 print("This car has" + str(self.odometer_reading) + "miles on it.")20

21 defupdate_odometer(self, mileage):22 if mileage >=self.odometer_reading:23 self.odometer_reading =mileage24 else:25 print("You can't roll back an odometer!")26

27 defincrement_odometer(self, miles):28 self.odometer_reading += miles

创建子类时,Python首先需要完成的任务是给父类的所有属性赋值。为此,子类的方法__init__()需要父类施以援手。

1 classElectricCar(Car):2 """电动车的独特之处"""

3 def __init__(self, make, model, year):4 """初始化父类的属性"""

5 super().__init__(make, model, year)6 """再初始化子类的属性"""

7 self.battery_size = 70

8

9 defdescribe_battery(self):10 print("This car has a" + str(self.battery_size) + "-kWh battery.")11

12 """再子类中对父类的重写"""

13 '''

14 假设父类中有一个名为fill_gas_tank()的函数,但它对子类来说毫无意义,因此15 你可能需要重写它16 '''

17 deffill_gas_tank(self):18 """电动汽车没有油箱"""

19 print("This car doesn't need a gas tank!")20

21 my_tesla = ElectricCar('tesla', 'model s', 2018)22 my_tesla.describe_battery()

导入类

随着你不断地给类添加功能,文件可能变得更长,即便你妥善地使用了继承亦如此。为遵循Python的总体理念,应让文件尽可能简洁。为在这方面提供帮助,Python允许将类储存在模块中,然后在主程序中导入所需的模块,例如上述的python_superclass.py文件。

新建一个

你可以导入一个类,也可以导入多个类

1 #-*- coding:UTF-8 -*-

2

3 from python_superclass importCar, ElectricCar4

5 """导入所有类"""

6 from python_superclass import *

7

8 my_beetle = Car('volkswagen', 'beetle', 2018)9 print(my_beetle.get_descriptive())10

11 my_tesla = ElectricCar('tesla', 'roadster', 2017)12 print(my_tesla.get_descriptive())

另外一种方法:

1 #-*- coding:UTF-8 -*-

2

3 """导入模块"""

4 importpython_superclass5

6 my_beetle = python_superclass.Car('volkswagen', 'beetle', 2018)7 print(my_beetle.get_descriptive())8

9 my_tesla = python_superclass.ElectricCar('tesla', 'roadster', 2017)10 print(my_tesla.get_descriptive())

以上导入类的方法有一个前提,这些模块必须在同一目录下,某则的话会报错,如下:

下面关于导入另一目录下类的方法进行简述:

此时python_import_class.py文件在目录为:H:\Python Procedure\python class的文件夹下,而python_superclass.py文件在目录为:H:\Python Procedure\python dictionary的文件夹下,

针对这种情况的解决方法如下:

1 #-*- coding:UTF-8 -*-

2

3 importsys4 sys.path.append(r"H:/Python Procedure/python dictionary")5 importpython_superclass6

7 my_beetle = python_superclass.Car('volkswagen', 'beetle', 2018)8 print(my_beetle.get_descriptive())9

10 my_tesla = python_superclass.ElectricCar('tesla', 'roadster', 2017)11 print(my_tesla.get_descriptive())

同样,如果是放在了上级目录或者下级目录中,也可以使用上述方法,可以认为它是一种通用的方法。

当你看到这篇文章的时候,希望上述的内容能够对你有所帮助,当然,有什么错的地方,也请你提出来,我会多多改正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值