Python OOP 面向对象

本文深入探讨了Python中的面向对象编程(OOP)概念,包括继承、多态和封装,以及类的伪私有属性如何避免命名冲突。同时,详细解析了绑定方法与无绑定方法的区别,以及它们在实例化对象后的调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Python实现OOP可以概括为三个概念:

  • 继承:基于Python属性查找
  • 多态:在x.method中,method的意义取决于x的类型
  • 封装:方法和运算符实现行为,数据隐藏是一种惯例

2.委托:通常就是指控制器对象内嵌其他对象,而把运算请求传给那些对象。

3.类的伪私有属性:变量名压缩,一种把类所创建的变量名局部化的方式,主要是为了避免实例内的命名空间的冲突,当每个类说self.x时所得的值,

  取决于最后一个赋值的是那个类。变量名

class C1:
    def meth1(self):
        self.x = 88
    def meth2(self):
        print(self.x)

class C2(object):
    """docstring for C2"""
    def metha(self):
        self.x = 99
    def methb(self):
        print(self.x)

class C3(C1,C2):
    pass


if __name__ == "__main__":
    c3 = C3()
    c3.meth1()
    c3.metha()
    c3.meth2() # 此时调用输出为99,会覆盖C1的x的值
class C1:
    def meth1(self):
        self.__x = 88
    def meth2(self):
        print(self.__x)

class C2(object):
    """docstring for C2"""
    def metha(self):
        self.__x = 99
    def methb(self):
        print(self.__x)

class C3(C1,C2):
    pass


if __name__ == "__main__":
    c3 = C3()
    c3.meth1()
    c3.metha()
    c3.meth2() # 此时调用输出为88

4.绑定方法与无绑定方法

对象点号运算,而没有用括号调用之前产生绑定方法

类点号运算之后,产生无绑定方法,但是调用之前必须明确的传入self参数

class Test:
    def display(self,*arg):
        print(arg)

if __name__ == "__main__":
    t1 = Test()
    func = t1.display # 绑定方法
    func([1,2,3]) # 调用时不必指出self参数,因为已经将方法绑定到对象t1

    t2 = Test()
    func2 = Test.display # 无绑定方法
    func2(t2,[4,5,6]) # 调用时必须明确指定self参数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值