方便快速回顾Python的OOP语法

1 ######################

2 # 类的私有专有方法 #

3 ######################

4 # __init__ : 构造函数,在生成对象时调用

5 # __del__ : 析构函数,释放对象时使用

6 # __repr__ : 打印,转换

7 # __setitem__ : 按照索引赋值

8 # __getitem__: 按照索引获取值

9 # __len__: 获得长度

10 # __cmp__: 比较运算

11 # __call__: 函数调用

12 # __add__: 加运算

13 # __sub__: 减运算

14 # __mul__: 乘运算

15 # __div__: 除运算

16 # __mod__: 求余运算

17 # __pow__: 乘方

18

19 class BaseClass:

20 """a Base Class"""

21 baseName = "BaseName";

22 def __init__(self,baseName):

23 self.baseName = baseName;

24 pass;

25 def myBaseName(self):

26 return "[BaseClass.myBaseName]" + self.baseName;

27 pass;

28 def myMethod(self):

29 return '[BaseClass.myMethod] 调用父类方法';

30 pass;

31 pass;

32

33 class ClassName(BaseClass): # 继承

34 # 多继承:class SubClass(Base1, Base2, Base3):

35 """a simple sample of class"""

36 i = 12345 # 公有属性:public

37 name = ''

38 money = 0

39 __weight = 0 # 私有属性:private,两个下划线开头,声明该属性为私有,不能在类外部被使用或直接访问

40 def __init__(self,name,money,msg=None):# 构造方法:private,在类实例化时会自动调用

41 self.data = [0,1];

42 if type(name).__name__ != 'list':

43 BaseClass.__init__(self,name); #【调用基类构造方法】

44 self.name = name;

45 self.msg = msg;

46 self.money = money;

47 self.__weight = 10;

48 self.__whisper(); #【调用私有方法】

49 pass;

50 def fun(self): # 公有方法:public

51 print(self.__class__); # 类的方法与普通的函数的唯一区别——必须一额外的首参数, 按照惯例它的名称为self

52 # self:约定俗成的命名,非固定命名;代表类的实例,而非类本身

53 print(self);

54 print("[ClassName.fun] 我叫:%s" %(self.name));

55 return "[ClassName.fun] Hello World";

56 pass;

57 def __whisper(self): # 私有方法:private,外部调用将报错

58 print("[ClassName.__whisper__] 内部悄悄话,外人看不见~");

59 pass;

60 def myMethod(self): # 重写:重写父类方法

61 return '[ClassName.myMethod] 调用子类方法';

62 def __add__(self,other): # 重写私有专有方法

63 return ClassName(self.name, self.money + other.money, self.msg + other.msg);

64 pass;

65 pass;

66

67 # use demo

68

69 obj = ClassName("Johnny",100,"Hi,girl!"); # 实例化对象,且必须满足__init__()方法要求的参数,否则报错

70 print(obj.i);

71 print(obj.data);

72 print(obj.name);

73 print(obj.msg);

74 print(obj.fun());

75

76 obj2 = ClassName("Johnny",200,"Hi,girl!");

77 print(obj.money);

78 print(obj2.money);

79 print((obj +obj2).money);

80

81 print(obj.myBaseName()); # 【调用父类方法】

82 print(obj.myMethod()); # 【调用子类(重写)方法】

83 print(super(ClassName, obj).myMethod()); # 【调用父类(被重写/覆盖的)方法】

输出:

[ClassName.__whisper__] 内部悄悄话,外人看不见~

12345

[0, 1]

Johnny

Hi,girl!

<__main__.ClassName object at 0x000002D2C576EB38>

[ClassName.fun] 我叫:Johnny

[ClassName.fun] Hello World

[ClassName.__whisper__] 内部悄悄话,外人看不见~

100

200

[ClassName.__whisper__] 内部悄悄话,外人看不见~

300

[BaseClass.myBaseName]Johnny

[ClassName.myMethod] 调用子类方法

[BaseClass.myMethod] 调用父类方法

参考文献

  null

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。