A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2019-3-15 16:28  /  1074 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、什么是类

类 是面向对象程序设计中抽象的主要方法。在Python中,类的实例代表了每个数据块。

二、类的方法、实例变量

1、定义一个类

以class为关键词定义一个类

2、定义成员函数(方法)

类中以def为关键词定义的函数,是类的成员函数,也称方法
其中名为__init__的方法是类的构造函数

3、类的实例变量(数据成员、属性、域)

构造函数中,以self标识符限定的变量为类的实例变量,也称数据成员、属性或域
(根据惯例,类的数据成员应该是 非公有的,类的用户不应该直接访问这样的成员,所以在数据成员的名称中,一般会在前面加一个下划线,比如_account)

例:以一个信用卡类定义来说明类的组成部分

class CreditCard:
"""以class作为关键词定义一个CreditCard(信用卡)【类】"""

"""类中def定义的“函数”均为类的【成员函数】,也称为【方法】"""

        def __init__(self,customer,bank,acnt,limit):
        """ 类的方法中,名为'__init__'的方法是类的【构造函数】'''
                self._customer = customer                                #用户名,例如:'zhang san'
                self._bank = bank                                                #所属银行,例如:'招商银行’'
                self._account = acnt                                        #卡账号,例如:6222023200003451627
                self._limit = limit                                                #卡额度,例如:18000
                self._balance = 0                                                #已用额度,例如:8500
                '''构造函数中,以self标识符标识的是类的【实例变量】,
                也称【数据成员】、【属性】或【域】'''

        def get_customer(self):
        '''为CreditCard类定义了一个获取用户的方法/成员函数'''
                return self._customer

        def get_bank(self):
        '''为CreditCard类定义了一个获取所属银行的方法'''
                return self._bank

        def get_account(self):
        '''为CreditCard类定义了一个获取卡号的方法'''
                return self._account

        def get_limit(self):
        '''为CreditCard类定义了一个获取卡额度的方法'''
                return self._limit

        def get_balance(self):
        '''为CreditCard类定义了一个获取已用额度的方法'''
                return self._balance

        def charge(self,price):
        '''为CreditCard类定义了一个支付的方法'''
                if price + self._balance > self._limit:
                        return False
                else:
                        sele._balance += price
                        return True

        def make_payment(self,amount):
        '''为CreditCard类定义了一个还款的方法'''
                self._balance -= amount

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
类是其实例的蓝图,每个实例通过属性确定状态信息;类以及实现它的实例,给成员函数提供了一系列行为。

三、实例化类、调用类的方法

1、实例化一个类

用户可以用类似下面的语法实例化一个CreditCard类

cc = CreditCard('Jone Doe','ICBC','6222023209802718748','20000')
1
2、调用类的方法

调用者使用方法时,不需要传入self标识符,即可调用CreditCard类的get_customer方法

cc.get_customer()
1
我们会发现,调用者使用方法的签名与类内部定义声明使用方法的签名有差异:
从用户角度来看,get_customer()不带参数;但在类定义中,self是一个明确的参数。
解释器在调用这些函数时,自动将 调用对应函数的实例 绑定为 self参数 。

四、涉及到的一些其他概念

1、封装

通常情况下,我们将所有数据成员视为非公有的,类的用户不能直接访问。因此,我们常常提供类似于get_customer的访问函数,以提供拥有只读访问特性的累的用户。
若希望允许用户改变状态,我们可以提供适当的更新方法。
以上的思想被称为“封装”,在数据结构中,封装内部表达的方式允许我们更加灵活地设计类的工作方式,这或许能提高数据结构的效率。
---------------------
【转载,仅作分享,侵删】
作者:琪仔要转行回coder
来源:CSDN
原文:https://blog.csdn.net/lllllaaa77/article/details/88399472
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
加油,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马