说说在 Python 中如何创建与使用类

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

假设,我们需要创建一个 User 类,用于定义账号信息。

class User():
    '''账号信息'''

    def __init__(self, name, pwd):
        '''初始化'''
        self.name = name
        self.pwd = pwd

    def valid(self):
        '''是否验证通过'''
        print(self.name + ' 验证通过')


  • 在 Python 中, 约定类的名称首字母大写 。因为这是一个基本类,所以类定义中的括号是空的 。
  • 在冒号之后,定义了一个文档字符串, 用于描述这个类的功能。

1 初始化方法 __init__()

当我们根据某个类来创建实例时,就会调用该方法 __init__()。 在这个方法的名称中, 开头和末尾各有两个下划线, 这是 Python 的约定, 这样可以避免与 Python 的默认方法或普通方法发生名称冲突 。

这里的方法 __init__() 包含三个形参: self 、 name 和 pwd。注意: 必须要有形参 self, 而且必须位于其他形参的之前。 创建类实例时, 就会动传入实参 self 。 调用每个与类相关联的方法,都会自动传递实参 self , 它是一个指向实例本身的引用, 通过它,可以让实例能够访问类中的属性和方法。

这里,我们在方法 __init__() 中,定义了两个变量,姓名与密码。以 self 为前缀的变量都可以供类中的所有方法调用, 我们还可以通过类的任何实例来访问这些变量。 这些变量称为类的属性。

2 创建实例

现在,让我们创建一个账号实例。

class User():
   ...


#  创建实例
deniro_user = User('Deniro', '1')
print('账号名:' + deniro_user.name)
print('密码:' + deniro_user.pwd)

运行结果:

账号名:Deniro
密码:1

可以使用句点表示法来访问实例的属性。

注意: 类与实例命名约定: 首字母大写的名称( 如 User ) 指的是类, 而
小写的名称( 如 deniro_user ) 指的是依据类创建的实例。

3 调用方法

也可以使用句点表示法,来调用类定义的任何方法。

class User():
   ...


#  创建实例
deniro_user = User('Deniro', '1')

# 调用实例方法
deniro_user.valid()

运行结果:

Deniro 验证通过

建议为属性和方法取一个合适的描述性名称,这样有助于维护和理解这些代码。

4 创建多个实例

lass User():
  ...


#  创建实例
deniro_user = User('Deniro', '1')
print('账号名:' + deniro_user.name)  # 访问实例属性
print('密码:' + deniro_user.pwd)

lily_user = User('Lily', '2')
print('账号名:' + lily_user.name)  # 访问实例属性
print('密码:' + lily_user.pwd)

# 调用实例方法
deniro_user.valid()
lily_user.valid()

运行结果:

账号名:Deniro
密码:1
账号名:Lily
密码:2
Deniro 验证通过
Lily 验证通过

创建的每一个实例,都是独立的, 都拥有自己的一组属性,而且能够执行相同的方法。

我们可以根据需求,为一个类创建任意数量的实例。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,739评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,092评论 1 32
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,725评论 0 10
  • 小王子来到了第六颗星球,要不是重读,我都不记得他去了那么多星球,下一个要探索的就是地球了。在第六颗星球上,小王子遇...
    Wendy_9397阅读 154评论 0 0
  • “风定池莲自在香”,一切关于夏日荷塘的清凉记忆,在小暑这天都被唤醒了。 今日小暑,又值超级台风迫近,南方沿海开始了...
    彭有倦阅读 319评论 0 5