python--面向对象编程

本文介绍了Python中的类定义、继承、封装、多态等面向对象编程的基本概念,并详细解释了构造函数、析构函数、类变量及其实例变量的区别。

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

类的定义:
  1. class Parent:
  2.     classNum = 10;
  3.     def __init__(self, age, name):
  4.         self.num = 5;
  5.         self.age = age;
  6.         self.name = name;
  7.     def __del__(self):
  8.         print("Deleting object");
  9.     def func(self):
  10.         pass;
  11.     def printNum(): #这种定义会抛出异常,因为python中没有类似与java中的类方法
  12.         print Parent.classNum;
  13. if __name=="__main__":
  14.     mc = Parent();
  15.     print "Class mumber:", Parent.classNum;
  16.     print "Class mumber:", mc.classNum;
  17.     print "Instance number:", mc.num;
  • 说明:
    • __init__:构造函数,在对象实例化的时候自动调用
    • __del__:析构函数,用于对象销毁时执行,当对象实例的引用计数为0时,该对象实例将自动被析构回收
    • self:类似于java、c++中的this指针,用于引用实例本身;不同于c++的是,self使用“.”进行成员引用
    • classNum:类变量,相当于java中的static变量,可以通过类名直接访问,也可以通过实例对象访问
    • num:类实例对象,只能通过实例对象进行访问,通过类名进行访问将导致异常“AttributeError: class MyClass has no attribute 'num'”
    • 静态方法:python中有类变量,但是没有类方法,即没有类似于java中的static方法
继承:
  • 单继承
  1. class child(Parent):
  2.     def tell(self):
  3.         Parent.tell(self);
  4.         print "I'm child"
  • 多继承
  1. class child(Father, Mother):
  2.     def __init__(self, age, name):
  3.         self.age = age;
  4.         self.name = name;
  5.         Father.__init__(self, 48, "Bob");    #在子类中调用父类的初始化方法
  6.     def tell(self):
  7.          print "I like to play with both of father and mother!"
  • 说明:
    • 继承的语法就是在类名后面的括号中用逗号分隔父类
    • 子类继承父类的类变量、实例属性、方法
    • 覆盖:当子类中存在于父类相同名字(不同于Java中的方法签名,python中只检查方法名)的方法时会覆盖父类的方法;覆盖规则对于类变量、实例属性同样适用
    • 重载:python中不支持重载,即不允许存在名字相同的方法
封装:
  • 由于python是动态语言,实际上python不支持封装,因为可以通过类实例随意添加和修改属性
  • 由于python没有访问权限修饰符,所以python不支持数据隐藏,既可以访问对象的所有属性
多态:
  • 由于python是动态语言,所以不支持类似于Java的多态(用子类去实例化一个父类类型的对象)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值