Python3:OOP Demo
2021-05-17 15:29
标签:code 公有 函数调用 mon 看不见 构造函数 base 函数 继承 方便快速回顾Python的OOP语法 输出: 参考文献 null Python3:OOP Demo 标签:code 公有 函数调用 mon 看不见 构造函数 base 函数 继承 原文地址:https://www.cnblogs.com/johnnyzen/p/9746386.html 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!
下一篇:python GIL锁