知识点梳理

类的相关知识点梳理

1.  类:  实体类, 业务类, 界面(UI)类

    (1)定义类:

        1) 类的对象的构造方法

class Stu(object):
     def __init__(self):
        print(‘类的对象的构造方法’)

 

        2)类的方法

@classmethod
def list_stus(cls):
    print(‘类的方法’)

       3)类的静态方法

@staticmethod
def addStu(stu):
    print(‘类的静态方法’)

类中的方法有三种类型: 对象方法, 类方法,类的静态方法

 

 

2. 对象的创建

    类名(初始化参数) : Stu(),  在内存的堆中开辟一块内存区域(链表结构), 创建对象之后,返回对象所在内存区域的首地址。对于返回的首地址,可以赋给一个变量,这个变量就变成了对象的引用。通过对象的引用可以访问对象的属性和方法。 创建对象时, 默认调用类的构造方法__init__(self)。

 

3. 对象的销毁

1)del 对象引用名,删除对象引用指向的内存区域, 默认会调用类的析构方法__del__(self)

2) 如果删除的对象中存在其它引用,则不会删除内存区域。

        举例如下:

s = Stu()
b = s
del s  # 不会调用类的__del__()方法
del b   # 会调用类的__del__()方法   

 

 

 

 

4. 类对象之间的关联关系

        举例如下:

class Card:
  def__init__(self,number,money,passwd):
     self.number = number
     self.money = money
     self.passwd = passwd

  def show(self):
      print(‘—card show()—’)

class User:
    def__init__(self,name,bank_card)
        self.name = name
        self.bank_card = bank_card  
       #用户和银行卡是一对一的关系

    def __del__(self):
       print(‘--User--del’)
	

 5.对象之间的引用:

card = Card(3, 0, ’10010’)
user = User(‘Judy’, card)
del card  # card 引用名从栈中删除了
    card.number  # 报card没有声明或签名。
    user.bank_card.numer  # 可以输出,显示用户的银行卡的卡号
user.bank_card.show()  # 可以输出, 使用对象的引用,可访问对象的属性和执行对象的方法

del user # 是否执行 User类中的__del__函数? 

可以的,因为栈中user的指向堆中的类User,删除栈中的对象user,那么堆中的User没有了引用,系统便可以回收堆中的User,所以执行del user ,就等同于执行了类中User类的__del__函数!!!

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值