关键词 class

类命名规则

首字母大写,两个单词字母都要大写中间没有符号

类成员变量

普通变量

不需要符号,直接英文命名并且可以在外包修改其值

私有变量

双下划线开头变量:xx, name。 双下划线开头在python中自动给予他私有访问权限
注意:如果对私有变量result赋值操作__result = -1,那么会给对象添加一个__result的变量但是不会改变原来定义好的私有变量result。因为私有变量在对象内存中的名字不是它本身,而是被python改为了_类名.__私有变量名的方式。在外部也不能使用_类名.__私有变量名的方式给私有变量赋值。

系统内置变量

双下划线开头+双下划线结尾:xx, members

protected变量

前面一个单下划线:_xx外部可以访问,和普通变量一样可以随意修改,只不过是一个约定。
类变量

类变量与实例变量

类变量属于类不属于实例,是由多个实例共享的
访问类变量需要类名.类变量名 或者self.__class__.类变量名
实例变量是以实例为单位,每一个实例的实例变量是不共享的
实力变量要用self.实力变量名赋值

类函数

构造函数

  1. # 构造函数 不能返回字符串
  2. # 构造函数形式参数必须有self
  3. def __init__(self,name, age):
  4. self.name= name
  5. self.age= age

静态函数

  1. # 静态方法 @staticmethod 方法参数可以什么都不加 类和对象都可以调用
  2. @staticmethod
  3. def static_method():
  4. pass

同类方法一样可以通过类名或者对象访问静态函数
不能访问self.实力变量

与另外两种函数的区别:

静态函数没有必须的形式参数(构造函数必须有self,类方法必须有cls)

类方法

操作类变量

  1. #类方法 和别的方法的区别就是必须加上@classmethod cls是默认类方法的参数,
  2. # 判断是不是类方法就看有没有@classmethod
  3. @classmethod
  4. def sum_plus(cls):
  5. cls.sum += 1;
  6. print(cls.sum)

调用方式:类名.类方法名对象.类方法名(不推荐)
不能访问self.实力变量

类方法与实例方法的区别:
类方法操作类变量,实例方法操作实例变量

继承

父类:

  1. class Human():
  2. def __init__(self, age,name):
  3. self.name=name
  4. self.age=age
  5. def print_name(self):
  6. print('parent:'+self.name)

子类:

  1. from Human import Human
  2. #继承的时候在类后面加上(父类)
  3. class Student(Human):
  4. def __init__(self,name,age,school):
  5. #调用父类构造方法
  6. # 这种方法不符合开闭原则 不建议使用
  7. Human.__init__(self,name,age);
  8. # 建议使用以下方法
  9. #调用父类构造方法,形式参数(自己类名,self)
  10. super(Student,self).__init__(age,name)
  11. self.school=school
  12. def print_name(self):
  13. #调用父类方法
  14. super(Student,self).print_name();
  15. print('student')
  16. student = Student('Andrew',10,'school');
  17. student.print_name()

调用父类方法固定格式:super(自己类名,self).父类方法名()