Python 对象 --组合,绑定

本文介绍了Python中如何通过组合而非继承来实现类的设计,并提供了一个具体示例。此外,还探讨了类对象、实例对象的概念及注意事项。

组合:

当对象之间无法继承和多继承时,此时可能需要用到组合。

比如一个水池里面有鱼和乌龟,此时肯定不能继承

组合代码如下:

class Turtle:
    def __init__(self,x):
        self.num = x

class Fish:
    def __init__(self,x):
        self.num = x

class Pool:
    def __init__(self,x,y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)

    def print_num(self):
        print("there are turtles %d, fish %d" % (self.turtle.num,self.fish.num))

pool = Pool(1,10)
pool.print_num()

类、类对象和实例对象

类定义后也叫类对象

比如下图的C便是类对象


类定义的属性都是静态属性,

当属性的名字和方法相同,属性会覆盖方法。如下:


为了避免名字上的冲突,大家需要遵守一些约定俗成的规矩:

1.不要试图在一个类里边定义出所有能想到的特性和方法,应该利用继承和组合机制来进行扩展

2.用不同的词性命名,如属性名用名词,方法名用动词


什么是绑定:

Python严格要求方法需要有实例才能被调用,这种限制其实就是python所谓的绑定概念

在类没有实例化时,不要调用类中的方法。如下:


之所以会出现这个error,是因为函数中没有self这个变量用来绑定真正的对象实例

可以通过使用__dict__来查看对象的属性。如下图,dd的属性是字典,内容为空

类中定义的属性和方法都是静态的,即使del CC,即将CC类删掉,CC的实例也依然可以调用CC中的方法,因为静态变量一直存在,直到程序退出才释放空间。尽量使用实例属性,不要使用类属性,类属性主要用来跟踪一些值



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值