Python 学习笔记13 类 - 创建和简单使用

时间:2022-08-28 09:23:34
介绍:

面向对象编程是一种非常有效的软件编写方法之一,在面向对象编程中,我们会编写表示现实世界中的事物或者情景的类,并基于类来创建对象。

在编写类的的时候,这些类对象一般都有通用的行为或者属性。基于类创建对象时,每个对象都自动具备这些属性和行为,然后给予需要给与这些对象一些特殊的属性或者行为。

我们几乎可以使用面向对象的方式来模拟现实生活中的所有情景。

根据类来创建队形被称为实例化,这让你能够使用类的实例。

创建类:

我们使用一个例子来说明怎么创建一个类。

我们假设创建一个名叫dog的类,我们知道狗狗一般会跑,叫,有些还会坐下,这些都是这个类的一些行为,我们也可以定义它的一些属性,比如名字和年龄。我们可以再代码中这样来实现这个类:

class Dog():
def __init__(self, name, age):
self.name = name
self.age = age def sit(self):
print(self.name + " is sitting.") def run(self):
print(self.name + " is running.") def bark(self):
print(self.name + " is barking.")

在上面代码中我们可以看到,我们定义可一个dog类,在python的约定中,我们一般用首字母大写来表示类。

在定义好类的名字后,我们看到Python使用__init__来初始化类对象,就像一个构造函数一样。我们可以在这个函数方法中来初始化和定义我们需要的一些变量(属性),比如表示自身的self,表示名字的name,表示年龄的age。这些属性一旦定义好后,可以在类的方法中使用。当类被实例化成对象后,对象自动拥有这些属性。

这个类还被定义了一些方法,比如run,sit和bark,在这些方法中我们也可以看到,他可以自动的调用name,age等参数,因为他们已经是类的属性。

使用类:

根据类,我们可以创建和实例化一个对象。我们可以把dog类看做是一个对象的说明,而实例化的过程,实际就是根据说明创建一个对象的过程。

class Dog():
def __init__(self, name, age):
self.name = name
self.age = age def sit(self):
print(self.name + " is sitting.") def run(self):
print(self.name + " is running.") def bark(self):
print(self.name + " is barking.") my_dog = Dog('WanCai', 5 )

我们可以看到,我们使用code:my_dog = Dog('WanCai', 5 ) 来实例化了一个叫wancai, 6岁的名叫my-dog的对象。

一旦实例化了一个对象,我们就可以调用这个对象的属性和方法:

my_dog = Dog('WanCai', 5 )
print(type(my_dog))
print("name is : " + my_dog.name)
print("age is : " + str(my_dog.age))
my_dog.sit()
my_dog.run()
my_dog.bark() '''
输出:
<class '__main__.Dog'>
name is : WanCai
age is : 5
WanCai is sitting.
WanCai is running.
WanCai is barking.
'''

一旦我们定义好了类,我们可以根据实际的需要来创建多个实例:

my_dog = Dog('WangCai', 5 )
print(type(my_dog))
print("name is : " + my_dog.name)
print("age is : " + str(my_dog.age))
my_dog.sit()
my_dog.run()
my_dog.bark() rachel_dog = Dog('LaiFu', 5 )
print(type(rachel_dog))
print("name is : " + rachel_dog.name)
print("age is : " + str(rachel_dog.age))
rachel_dog.sit()
rachel_dog.run()
rachel_dog.bark() '''
输出:
<class '__main__.Dog'>
name is : WangCai
age is : 5
WangCai is sitting.
WangCai is running.
WangCai is barking.
<class '__main__.Dog'>
name is : LaiFu
age is : 5
LaiFu is sitting.
LaiFu is running.
LaiFu is barking.
'''

Python 学习笔记13 类 - 创建和简单使用的更多相关文章

  1. python学习笔记4&lowbar;类和更抽象

    python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...

  2. python 学习笔记 13 -- 经常使用的时间模块之time

    Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...

  3. Python学习笔记12—类

    典型的类和调用方法: #!/usr/bin/env Python # coding=utf-8 __metaclass__ = type #新式类 class Person: #创建类 def __i ...

  4. python学习笔记13(模块、包)

    在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...

  5. Python学习笔记 - day7 - 类

    类 面向对象最重要的概念就是类(Class)和实例(Instance),比如球类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同.在Python中,定义类 ...

  6. Python 学习笔记13:Python &plus; wsgi &plus; django 配置。坑爹的python3和wsgi不兼容的解决

    今人不见古时月,今月曾经照古人.生命是如此的美丽与短暂! 学习Python已经两个月了,Python的语法通过做简单的语法题和看Python语法介绍,有了初步的了解.但上班还是要做别的事情,所以感觉学 ...

  7. python学习笔记1-元类&lowbar;&lowbar;metaclass&lowbar;&lowbar;

    type 其实就是元类,type 是python 背后创建所有对象的元类   python 中的类的创建规则: 假设创建Foo 这个类 class Foo(Bar): def __init__(): ...

  8. Python 学习笔记 - 10&period;类&lpar;Class&rpar; 1

    定义 Python 的 Class 比较特别,和我们习惯的静态语言类型定义有很大区别. 1. 使用一个名为 __init__ 的方法来完成初始化.2. 使用一个名为 __del__ 的方法来完成类似析 ...

  9. Python学习笔记008&lowbar;类&lowbar;对象&lowbar;继承&lowbar;组合&lowbar;类相关的BIF

    # 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...

随机推荐

  1. Specific sleep staging features in EEG

    Source: MedScape Overview NREM and REM occur in alternating cycles, each lasting approximately 90-10 ...

  2. bzoj1007&lbrack;HNOI2008&rsqb;水平可见直线

    cycleke神说要用半平面交(其实他也用的凸包),把我吓了一跳,后来发现(看题解)其实可以先按斜率排序,再将最小的两条线入栈,如果其与栈顶元素的交点在上一个点的左边,则将栈顶元素出栈.这是一个开口向 ...

  3. 安装ftp 服务器

    安装ftp 服务器 #yum install vsftp 安装ftp 客户端 重启ftp服务器 sudo /etc/init.d/vsftpd restart /start /stop 进行ARM 和 ...

  4. &lbrack;IT&rsqb; 关闭笔记本的蜂鸣提示

    很久没有写什么了,今天开过workshop, 稍微放松些, 一时动念上来看看,没想到最近一篇都是2010年的了, 不得不感叹时光流逝之快啊. 那就写点什么吧. 现在每天工作用的DELL笔记本,性能差强 ...

  5. poi jsp xls

    poi jsp xls <%@ page language="java" pageEncoding="UTF-8"import="java.ut ...

  6. 2018-2019-2 网络对抗技术 20165328 Exp5 MSF基础应用

    目录 实验要求: 基础问题回答: 离实战还缺些什么技术或步骤? 实验内容: Exp5-1 主动攻击实践:实现ms08_067(失败) 实现ms17_010_eternalblue(成功) Exp5-2 ...

  7. 自己动手造拖拉机*系列 -(react-loadable&rpar;

    最新消息:react官方已支持懒加载https://reactjs.org/docs/code-splitting.html#reactlazy 文章webpack分片chunk加载原理中深入探究了异 ...

  8. 深度学习实战-强化学习-九宫格 当前奖励值 &equals; max&lpar;及时奖励 &plus; 下一个位置的奖励值 &ast; 奖励衰减&rpar;

    强化学习使用的是bellmen方程,即当前奖励值 = max(当前位置的及时奖励 + discout_factor * 下一个方向的奖励值)   discount_factor表示奖励的衰减因子 使用 ...

  9. Webpack2学习记录-1

    1.安装前准备 安装 webpack 之前,需要安装 node,这时最新的是 6,npm 是 4.如果有老的 node 项目在跑建议安装下 nvm. 2.建议安装在局部,即在项目下的 node_mod ...

  10. 【LeetCode每天一题】Length of Last Word&lpar;字符串中最后一个单词的长度&rpar;

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...