加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python编程从入门到实践笔记——类

发布时间:2020-12-17 00:21:56 所属栏目:Python 来源:网络整理
导读:Python编程从入门到实践笔记——类 Dog(): span style="color: #0000ff;"gt;def/span span style="color: #800080;"gt;__init__/spanspan style="color: #000000;"gt;(self,name,age): /spanspan style="color: #800000;"gt;"""/spanspan style="color: #800

Python编程从入门到实践笔记——类

Dog():
<span style="color: #0000ff;"&gt;def</span> <span style="color: #800080;"&gt;__init__</span><span style="color: #000000;"&gt;(self,name,age):
    </span><span style="color: #800000;"&gt;"""</span><span style="color: #800000;"&gt;初始化属性name和age</span><span style="color: #800000;"&gt;"""</span><span style="color: #000000;"&gt;
    self.name </span>=<span style="color: #000000;"&gt; name
    self.age </span>=<span style="color: #000000;"&gt; age

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; sit(self):
    </span><span style="color: #800000;"&gt;"""</span><span style="color: #800000;"&gt;模拟小狗被命令时蹲下</span><span style="color: #800000;"&gt;"""</span>
    <span style="color: #0000ff;"&gt;print</span>(self.name.title() + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt; is now sitting.</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; roll_over(self):
    </span><span style="color: #800000;"&gt;"""</span><span style="color: #800000;"&gt;模拟小狗被命令时打滚</span><span style="color: #800000;"&gt;"""</span>
    <span style="color: #0000ff;"&gt;print</span>(self.name.title() + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt; rolled over!</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

<span style="color: #008000;">#<span style="color: #008000;">init()是一个特殊的方法,每当根据Dog类创建新实例时,Python都会自动运行它。 <span style="color: #008000;">

<span style="color: #008000;">在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。<span style="color: #008000;">

<span style="color: #008000;">方法init()定义成了包含三个形参:self、name和age。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。<span style="color: #008000;">

<span style="color: #008000;">Python调用这个init()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身<span style="color: #008000;">

<span style="color: #008000;">的引用, 让实例能够访问类中的属性和方法。 我们创建Dog 实例时,Python将调用Dog类的方法init() 。 <span style="color: #008000;">

<span style="color: #008000;">我们将通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参(name 和age )提供值。

<span style="color: #008000;">#<span style="color: #008000;">2.根据类创建实例
my_dog = Dog(<span style="color: #800000;">'<span style="color: #800000;">willie<span style="color: #800000;">',6<span style="color: #000000;">)
<span style="color: #0000ff;">print(<span style="color: #800000;">"<span style="color: #800000;">My dog's name is <span style="color: #800000;">" + my_dog.name.title() + <span style="color: #800000;">"<span style="color: #800000;"> and he is <span style="color: #800000;">"+ str(my_dog.age) + <span style="color: #800000;">"<span style="color: #800000;"> years old.<span style="color: #800000;">"<span style="color: #000000;">)

<span style="color: #008000;">#<span style="color: #008000;">访问属性 .
<span style="color: #000000;">my_dog.name
<span style="color: #008000;">#<span style="color: #008000;">调用方法
<span style="color: #000000;">my_dog.sit()
<span style="color: #008000;">#<span style="color: #008000;">创建多个实例
my_dog = Dog(<span style="color: #800000;">'<span style="color: #800000;">willie<span style="color: #800000;">',6<span style="color: #000000;">)
your_dog = Dog(<span style="color: #800000;">'<span style="color: #800000;">lucy<span style="color: #800000;">',7<span style="color: #000000;">)

<span style="color: #008000;">#<span style="color: #008000;">9.2使用类和实例<span style="color: #008000;">

<span style="color: #008000;">1.Car类

<span style="color: #0000ff;">class<span style="color: #000000;"> Car():
<span style="color: #800000;">"""<span style="color: #800000;">一次模拟汽车的简单尝试<span style="color: #800000;">"""
<span style="color: #0000ff;">def <span style="color: #800080;">init<span style="color: #000000;">(self,make,model,year):
<span style="color: #800000;">"""<span style="color: #800000;">初始化描述汽车的属性<span style="color: #800000;">"""<span style="color: #000000;">
self.make =<span style="color: #000000;"> make
self.model =<span style="color: #000000;"> model
self.year =<span style="color: #000000;"> year
<span style="color: #008000;">#<span style="color: #008000;">添加属性odometer_reading,并设置默认值为0
self.odometer_reading =<span style="color: #000000;"> 0

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; get_odometer(self):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;This car has </span><span style="color: #800000;"&gt;"</span> + str(self.odometer_reading) + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt; miles on it.</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; set_odometer(self,mileage):
    self.odometer_reading </span>=<span style="color: #000000;"&gt; mileage

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; get_descriptive_name(self):
    </span><span style="color: #800000;"&gt;"""</span><span style="color: #800000;"&gt;返回整洁的描述性信息</span><span style="color: #800000;"&gt;"""</span><span style="color: #000000;"&gt;
    long_name </span>= str(self.year) + <span style="color: #800000;"&gt;'</span> <span style="color: #800000;"&gt;'</span> + self.make + <span style="color: #800000;"&gt;'</span> <span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; self.model
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; long_name.title()

my_new_car = Car(<span style="color: #800000;">'<span style="color: #800000;">Audi<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">A4L<span style="color: #800000;">',2016<span style="color: #000000;">)
<span style="color: #0000ff;">print<span style="color: #000000;">(my_new_car.get_descriptive_name())
my_new_car.get_odometer()

<span style="color: #008000;">#<span style="color: #008000;">2.给属性指定默认值

<span style="color: #008000;">#<span style="color: #008000;">3.修改属性的值<span style="color: #008000;">

<span style="color: #008000;">直接修改

my_new_car.odometer_reading = 23<span style="color: #000000;">
my_new_car.get_odometer()

<span style="color: #008000;">#<span style="color: #008000;">通过方法修改<span style="color: #008000;">

<span style="color: #008000;">def set_odometer(self,mileage)

my_new_car.set_odometer(35<span style="color: #000000;">)
my_new_car.get_odometer()

<span style="color: #008000;">#<span style="color: #008000;">9.3继承<span style="color: #008000;">

<span style="color: #008000;">创建子类的时候,父类必须包含在当前文件中,且位于子类的前面。<span style="color: #008000;">

<span style="color: #008000;">定义子类的时候,必须在括号内指定父类的名称。<span style="color: #008000;">

<span style="color: #008000;">方法init()接受创建Car实例所需的信息<span style="color: #008000;">

<span style="color: #008000;">super()帮助Python将父类和子类关联起来。

<span style="color: #0000ff;">class<span style="color: #000000;"> Battery():

</span><span style="color: #0000ff;"&gt;def</span> <span style="color: #800080;"&gt;__init__</span>(self,battery_size=70<span style="color: #000000;"&gt;):
    self.battery_size </span>=<span style="color: #000000;"&gt; battery_size

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; describe_battery(self):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;This car has a </span><span style="color: #800000;"&gt;"</span>+ str(self.battery_size) + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;-KWh battery.</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

<span style="color: #008000;">#<span style="color: #008000;">1.子类的方法init()
<span style="color: #0000ff;">class<span style="color: #000000;"> ElectricCar(Car):

</span><span style="color: #0000ff;"&gt;def</span> <span style="color: #800080;"&gt;__init__</span><span style="color: #000000;"&gt;(self,year):
    super().</span><span style="color: #800080;"&gt;__init__</span><span style="color: #000000;"&gt;(make,year)
    self.battery_size </span>= 70<span style="color: #000000;"&gt;

    self.battery </span>=<span style="color: #000000;"&gt; Battery()

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; describe_battery(self):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;This car has a </span><span style="color: #800000;"&gt;"</span> + str(self.battery_size) + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;-KWh battery.</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; fill_gas_tank(self):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;This car doesn't need a gas tank!</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

my_tesla = ElectricCar(<span style="color: #800000;">'<span style="color: #800000;">teala<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">model s<span style="color: #800000;">',2016<span style="color: #000000;">)
<span style="color: #0000ff;">print<span style="color: #000000;">(my_tesla.get_descriptive_name())

<span style="color: #008000;">#<span style="color: #008000;">2.给子类定义属性和方法
<span style="color: #000000;">my_tesla.describe_battery()

<span style="color: #008000;">#<span style="color: #008000;">3.重写父类的方法:取其精华,去其糟粕<span style="color: #008000;">

<span style="color: #008000;">def fill_gas_tank(self):

<span style="color: #000000;">my_tesla.fill_gas_tank()

<span style="color: #008000;">#<span style="color: #008000;">4.将实例用作属性<span style="color: #008000;">

<span style="color: #008000;">class Battery():

<span style="color: #000000;">my_tesla.battery.describe_battery()

<span style="color: #008000;">#<span style="color: #008000;">9.4导入类<span style="color: #008000;">

<span style="color: #008000;">1.导入单个类<span style="color: #008000;">

<span style="color: #008000;">打开模块dog(这里我为了方便在dog.py中写的内容),并导入其中的Car类

<span style="color: #0000ff;">from dog <span style="color: #0000ff;">import<span style="color: #000000;"> Car

my_new_car = Car(<span style="color: #800000;">'<span style="color: #800000;">audi<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">a4<span style="color: #800000;">',2016<span style="color: #000000;">)
<span style="color: #0000ff;">print<span style="color: #000000;">(my_new_car.get_descriptive_name())

<span style="color: #008000;">#<span style="color: #008000;">在一个模块中存储多个类:直接在模块中编写多个类

<span style="color: #008000;">#<span style="color: #008000;">从一个模块中导入多个类
<span style="color: #0000ff;">from dog <span style="color: #0000ff;">import<span style="color: #000000;"> Car,Battery

<span style="color: #008000;">#<span style="color: #008000;">导入整个模块
<span style="color: #0000ff;">import<span style="color: #000000;"> dog

<span style="color: #008000;">#<span style="color: #008000;">导入模块中的所有类<span style="color: #008000;">

<span style="color: #008000;">from module_name import *

<span style="color: #008000;">#<span style="color: #008000;">在一个模块中导入另一个模块

<span style="color: #008000;">#<span style="color: #008000;">9.5Python标准库

<span style="color: #008000;">#<span style="color: #008000;">9.6类编码风格<span style="color: #008000;">

<span style="color: #008000;">类名:驼峰命名法(大驼峰),不适用下划线<span style="color: #008000;">

<span style="color: #008000;">实例名和模块名:小驼峰,单词之间加下划线<span style="color: #008000;">

<span style="color: #008000;">每个模块都应包含一个文档字符串<span style="color: #008000;">

<span style="color: #008000;">空行的使用:在类中使用一个空行来分割方法;在模块中,使用两个空行来分割类<span style="color: #008000;">

<span style="color: #008000;">导入标准库中的模块和自己编写的模块,先导入标准库,空行,导入自己的模块

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读