has a 和 is a 的学习

精进,来源于重复和深入。

——杰

通过学习,我对这两则的理解是这样的。 is a 指的对象是类和对象之间的一种继承关系,比如,类human 和对象“小明”;has a 指的对象是类和类之间的一种包含关系。
我们学习理解has a和is a 的关系区别,实则是在弄明白代码之间是实现继承和接口继承的关系,提高代码的重用性。
下面我们来看一个列子

class Compter:
    def __init__(self,brand,type,color):
        self.brand=brand
        self.type=type
        self.color=color

    def online(self):
        print("正在使用电脑上网")

    def __str__(self):
        return self.brand + '-------'+self.type+'------'+self.color

class Book:
    def __init__(self,bname,number,author):
        self.bname=bname
        self.number=number
        self.author=author

    def __str__(self):
        return self.bname+self.author+self.number

class sudent:
    def __init__(self,name,compter,book):
        self.name=name
        self.compter=compter
        self.Book=[]
        self.Book.append(book)
    def __str__(self):
        return self.name+'------->'+str(self.compter)+'-----'+str(self.Book)

C=Compter('mac','pro','深灰色')
print(C)
Book('盗墓','10','南派')
print(Book)
stu=sudent('fefbg',C,Book)
print(stu)

结果

mac-------pro------深灰色
<class '__main__.Book'>
fefbg------->mac-------pro------深灰色-----[<class '__main__.Book'>]

这里我们可以发现,sudent和compter、Book之间属于同级关系的类,但是我们在sudent中,我们引用了compter和Book。
在初次的运行过程中,我发现很多输出错误。在后来的学习过程中,我才知道,这里有一个变量的概念。
在python中,有系统变量和自定义的变量。系统变量,主要是指int,list,set,string等;自定义变量,我们可以理解成是用户自己写的,比如我们这里的类,就是我们写的。
最后的解决办法是,在输出的地方,把输入的变量(对象)强转成字符串。

总结:
在python中,不仅函数之间可以相互引用,而且类之间也可以相互引用。一开始,我理解不了,但是也渐渐认识到python的强大。不管是我们赋值,还是创建对象,python都会给我们分配地址,既然分配了地址,我们就可以大胆引用,引用的过程中,注意类型的转化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值