标签:code 公有 函数调用 mon 看不见 构造函数 base 函数 继承
方便快速回顾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! <class ‘__main__.ClassName‘> <__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
标签:code 公有 函数调用 mon 看不见 构造函数 base 函数 继承
原文地址:https://www.cnblogs.com/johnnyzen/p/9746386.html