Python2语法简记(8):类

8 类

类变量(变量名前加 类名. 或cls. 或self.来访问)、实例变量(在实例方法中定义,变量名前加 self.来访问)、类方法、实例方法、静态方法
class Animal: # 类对象
age = 0 # 类变量

    def __init__(self, name): # 魔法方法
        self.name = name  # 实例变量

    def smile(self): # 实例方法。 self指向实例对象
        print self.age # 访问类变量
        self.age = 10 # 定义实例变量。这时候实例对象的__dict__字典中已经存在了age这个属性。
        print self.age # 访问实例变量

    @classmethod
    def run(cls): # 类方法。cls 指向类对象
        pass

    @staticmethod
    def msg(): # 静态方法,可以没有参数
        pass

类变量:所有实例化对象中是公用的。在类方法中通过“类名.变量名”, "cls.变量名"访问,在实例方法中通过“self.变量名”访问。
实例变量:定义在方法中的变量,只作用于当前实例的类。在实例方法中通过“self.变量名”定义后再访问,如果不定义直接访问,访问的是类变量。

创建实例对象:a = Bird(‘Tom’),不支持new
animal1 = Animal(‘Tom’)。不支持new。

类的继承:与C++类似,支持继承、多重继承
继承、多重继承、方法重写 与C++类似。

class Parent:        # 定义父类
    def myMethod(self):
        print '调用父类方法'
class Child(Parent): # 定义子类
    def myMethod(self):
        print '调用子类方法'
c = Child()          # 子类实例
c.myMethod()         # 子类调用重写方法

单下划线、双下划线、头尾双下划线说明:控制访问权限,特殊方法

  • foo: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。

  • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

  • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了

猜你喜欢

转载自blog.csdn.net/cjxunooo/article/details/84967587
今日推荐