一、什么是类
类 是面向对象程序设计中抽象的主要方法。在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
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|