Python:从入门到实践-第九章(笔记)_定义一个dog类在该类中定义init方法添加两个属性:name(名字 )和age(年龄)-程序员宅基地

技术标签: python  Python编程:从入门到实践(笔记)  开发语言  

9.1 :  创建和使用类

使用类几乎可以模拟任何东西


9.1.1 : 创建Dog类

根据Dog类创建每个实例都将存储名字和年龄,赋予每条小狗蹲下和打滚的能力;

# 定义一个名为Dog的类
class Dog:
    """一次模拟小狗的简单尝试"""

    # 类中的函数称为方法:方法__init__();
    # 方法__init__()定义成包含三个形参:self、name、和age;
    # 形参self必不可少,必须位于其他形参的前面;
    # 通过实参向Dog()传递名字和年龄,self会自动传递
    def __init__(self, name, age):
        """初始化属性name和age"""

        # 获取与行参name和age相关的取值,并将其赋给变量name和age,然后该变量关联到当前创建的实例;
        self.name = name
        self.age = age


    def sit(self):
        """模拟小狗收到命令时蹲下"""
        print(f"{self.name} is now sitting.")

    def roll_over(self):
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} rolled over!")


9.1.2 :根据类创建实例

可将类视为有关如何创建实例的说明。Dog类是一系列说明,让python知道如何创建表示特定小狗的实例。

# 定义一个名为Dog的类
class Dog:
    """一次模拟小狗的简单尝试"""

    # 类中的函数称为方法:方法__init__();
    # 方法__init__()定义成包含三个形参:self、name、和age;
    # 形参self必不可少,必须位于其他形参的前面;
    # 通过实参向Dog()传递名字和年龄,self会自动传递
    def __init__(self, name, age):
        """初始化属性name和age"""

        # 获取与行参name和age相关的取值,并将其赋给变量name和age,然后该变量关联到当前创建的实例;
        self.name = name
        self.age = age

    def sit(self):
        """模拟小狗收到命令时蹲下"""
        print(f"{self.name} is now sitting.")

    def roll_over(self):
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} rolled over!")


# 让python创建一条名字为'Willie'、年龄为6的小狗。
my_dog = Dog('Willie', 6)
your_dog = Dog('Lucy', 3)
my_dog.sit()
my_dog.roll_over()

# 编写了如下代码来访问my_dog的属性name和age的值;
print(f"\nMy dog's name is {my_dog.name}")
print(f"My dog is {my_dog.age} years old.")
my_dog.sit()

print(f"\nYour dog's name is {your_dog.name}.")
print(f"Your dog is {your_dog.age} years old.")
your_dog.sit()


运行结果:

Willie is now sitting.
Willie rolled over!

My dog's name is Willie
My dog is 6 years old.

Willie is now sitting.

Your dog's name is Lucy.
Your dog is 3 years old.
Lucy is now sitting.
 


9.2:使用类和实例

可使用类来模拟现实世界中的很多情景。类可执行修改实例的属性,也可编写方法来特定的方式进行修改。


9.2.1:Car 类

编写一个表示汽车的类,它存储了有关汽车的信息,还有一个汇总这些信息的方法:

class Car:
    """一次模拟汽车的简单尝试"""
    
# 定义方法,该方法还包含另外三个形参:make、model和year

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

# 定义一个名为get_descriptive_name的方法,它使用属于year、make和model创建一个对汽车进行描述的字符串;

    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()


# 根据Car类创建一个实例,并将其赋给变量my_new_car;

my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())


9.2.2 :给属性指定默认值

创建实例时,有些属性无须通过行参来定义,可在方法 __init__()中为其指定默认值;

class Car:

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

        # 添加一个名为odmeter_reading的属性,其初始值总是为0
        self.odometer_reading = 0


    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = f"{self.year}  {self.make}  {self.model}"
        return long_name.title()

    # 定义一个名为read_odometer的方法
    def read_odometer(self):
        """打印一条指出汽车里程的消息"""
        print(f"This car has {self.odo
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46109688/article/details/128888671

智能推荐

XRDP远程连接错误总结_libxrdp_force_read: header read error-程序员宅基地

文章浏览阅读1.3w次。XRDP远程连接错误总结XRDP无法连接,出错信息如下:解决方案:sudo gedit /etc/xrdp/sesman.inisudo gedit /etc/xrdp/sesman.ini在末尾加上:param8=-SecurityTypesparam9=None然后重启xrdp服务:sudo service xrdp restartReference:htt..._libxrdp_force_read: header read error

Java面试题之:Java算法(十大常见排序算法及其扩展(详细讲解))_排序 选择题 java-程序员宅基地

文章浏览阅读2.6k次,点赞12次,收藏65次。Java面试题之:Java算法一、二分查找一、二分查找  二分查找又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。..._排序 选择题 java

MySQL ERROR 3948 (42000) ERROR 2068 (HY000)_客户端mysql报3948-程序员宅基地

文章浏览阅读2.9k次,点赞4次,收藏17次。MySQL ERROR 3948 (42000) ERROR 2068 (HY000)需要导入到MySQL的数据如下:nameownerspeciessexbirthdeathFluffyHaroldcatf1993-02-04ClawsGwencatm1994-03-17BuffyHarolddogf1989-05-13FangBennydogm1990-08-27BowserDianedogm1979_客户端mysql报3948

十八、DPM模型案例(二)-程序员宅基地

文章浏览阅读1.1w次,点赞35次,收藏115次。关于DPM模型的设置,文章十六给出了一个简单的案例,文章十七介绍了DPM离散相界面的设置,本文通过一个案例来介绍DPM模型中Injection界面的设置,主要是颗粒粒径分布的设置。1 概念介绍DPM适用条件:DPM模型只适用于颗粒相体积分数小于10%,同时不考虑颗粒体积。不考虑颗粒和颗粒之间的相互作用力,但可以考虑颗粒和流体之间的相互作用。 ..._dpm模型

@Autowired注解在非controller中注入为null的问题-程序员宅基地

文章浏览阅读516次。在SpringMVC框架中,使用@Autowired注解注入Service或者Mapper接口,我们也知道,在controller层中注入service接口,在service层中注入其它的service接口或者mapper接口都是可以的,但是如果我们要在我们自己封装的Utils工具类中或者非controller普通类中使用@Autowired注解注入Service或者Mapper接口,直接注入是不...

2.3.3 交换机的RSTP技术_交换机rstp日志-程序员宅基地

文章浏览阅读253次。为了解决网络拓扑发生变化时网络收敛所需时间比较长的问题,可以采用快速生成树技术(RSTP)。RSTP的标准为IEEE 802.1w,它改进了STP,缩短了网络的收敛时间。RSTP的收敛速度最快可以缩短到1秒之内,在拓扑发生变化时能快速恢复网络的连通性。_交换机rstp日志

随便推点

使用STM32编写一个简单的RTOS:2.对象管理_#define _obj_container_list_init(c) \ {&(rt_object-程序员宅基地

文章浏览阅读464次。文章目录内核对象管理架构代码分析参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、对象管理器。内核对象管理架构RT-Thread 采用内核对象管理系统来访问 / 管理所有内核对象,内核对象包含了内核中绝大部分设施,这些内核对象可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过这种内核对象的设计方式,RT-Thread 做到了不依赖于具体的..._#define _obj_container_list_init(c) \ {&(rt_object_container[c].object_list)

一个java的小型WEB项目一个页面(IDEA + 前后端代码)--一些基本配置 分为三篇(第1篇)_前后端小型项目-程序员宅基地

文章浏览阅读1.5k次,点赞3次,收藏9次。以jsp前端页面完成的一个小项目,准备工作:1.新建一个项目勾选web配置一些东西点进去找到后点击我们自己创建的lib目录,这里面保存的是我们的jar包,然后会把lib勾选,点击apply,点击OK,然后配置Tomcat,我的Tomcat服务器是8.5.4版本的我的jar包:一个小技巧,修改idea的背景图片:找到设置找到background image点进去就可以选择想要替换的背景..._前后端小型项目

webshell学习第一天-程序员宅基地

文章浏览阅读79次。webshell:通过网站端口对网站服务器的某种程度上的权限,也被称为网站的后门工具。webshell是web入侵的脚本攻击工具,它是一个asp或php木马后门。在入侵一个网站后,将这些asp或php木马后门放在网站服务器的web目录中,与正常的网页文件混在一起。然后用web的方式,通过这些asp或php木马后门控制网站服务器,进行一些上传下载文件 查看数据库 执行任意程序命令。再通过dos命令..._webshell学习

Qt 对话框常见类型-程序员宅基地

文章浏览阅读1.5k次,点赞33次,收藏15次。对话框是 GUI程序设计中不可或缺的组成部分,很多不能或者不适合放入主窗口的功能组件都必须放在对话框中。

你,能保护好你的钱吗?-程序员宅基地

文章浏览阅读190次。你,能保护好你的钱吗?(为更好理解这篇文章的内容,建议新人浏览前面几篇文章打个底,它会完善你对钱的认知)前面的文章里,提过一个事实,要变得有钱,我们就要攒资产!|资产|资产是指能够不断增值,为你提供被动收入的东西。比如房子、店铺,再比如你持有的优质公司的股票或者基金。每年都能给你带来增值收益,这些都属于资产。努力赚钱,把钱变成资产,再让资产复利形成更多的资产,为自己赚钱,也就是常说的睡后收入。过去几十年,对于多数人来说,增值效果最好的两...

Machine learning in action ch02 KNN笔记_from g\2022-2023\machinelearninginaction3x-master\-程序员宅基地

文章浏览阅读157次。1.KNN算法特点描述优点:精度高、对异常值不敏感、无数据输入假定。 缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。2.KNN思想 对于一个给定的数据集,对于未知数据分类时,总是能够通过计算该点与其他数据点的距离(这个距离可以是欧式距离,也可以是闵氏距离,不加以限定),通过寻找该点的最邻近的K个数据点中的数量最多的数据点,来确定该数据点的分类。 实际上这是一种朴素贝叶斯的_from g\2022-2023\machinelearninginaction3x-master\ch02 import knn

推荐文章

热门文章

相关标签