面向对象中的所有成员如下:

  • 变量
    • 实例变量
    • 类变量
  • 方法
    • 绑定方法
    • 类方法
    • 静态方法
  • 属性

    变量

    1、实例变量,属于对象,每个对象中各自维护自己的数据。

2、类变量,属于类,可以被所有对象共享,一般用于给对象提供公共数据(类似于全局变量)。

方法

1、绑定方法,默认有一个self参数,由对象进行调用(此时self就等于调用方法的这个对象)【对象&类均可调用】

2、类方法,默认有一个cls参数,用类或对象都可以调用(此时cls就等于调用方法的这个类)【对象&类均可调用】

3、静态方法,无默认参数,用类和对象都可以调用。【对象&类均可调用】

  1. class Foo(object):
  2. def __init__(self, name,age):
  3. self.name = name
  4. self.age = age
  5. def f1(self):
  6. print("绑定方法", self.name)
  7. @classmethod
  8. def f2(cls):
  9. print("类方法", cls)
  10. @staticmethod
  11. def f3():
  12. print("静态方法")
  13. # 绑定方法(对象)
  14. obj = Foo("武沛齐",20)
  15. obj.f1() # Foo.f1(obj)
  16. # 类方法
  17. Foo.f2() # cls就是当前调用这个方法的类。(类)
  18. obj.f2() # cls就是当前调用这个方法的对象的类。
  19. # 静态方法
  20. Foo.f3() # 类执行执行方法(类)
  21. obj.f3() # 对象执行执行方法

属性

属性其实是由绑定方法 + 特殊装饰器 组合创造出来的,让我们以后在调用方法时可以不加括号,例如:

  1. class Foo(object):
  2. def __init__(self, name):
  3. self.name = name
  4. def f1(self):
  5. return 123
  6. @property
  7. def f2(self):
  8. return 123
  9. obj = Foo("武沛齐")
  10. v1 = obj.f1()
  11. print(v1)
  12. v2 = obj.f2
  13. print(v2)

成员修饰符

Python中成员的修饰符就是指的是:公有、私有。

  • 公有,在任何地方都可以调用这个成员。
  • 私有,只有在类的内部才可以调用改成员(成员是以两个下划线开头,则表示该成员为私有)。

父类中的私有成员,子类无法继承。