字段(Field)和方法(Method)称为类的属性(Attribute)。
实例对象(Instance Variables),类变量(Class Variables)
self
Python如何给self赋值?
假设一个MyClass类,这个类有一个实例myobject。当你调用myobject.method(arg1, arg2)时,Python将会自动将其转换成MyClass.method(myobject, arg1, arg2)——这就是self的全部特殊之处所在。
__init__方法
在类的对象被实例化时立即运行。
我们不会显式地调用__init__方法。这正是这个方法的特殊之处所在。
class Person:
def __init__(self, name):
self.name = name
def say_hi(self):
print('Hello, my name is', self.name)
p = Person('Swaroop')
p.say_hi()
输出:Hello, my name is Swaroop
类变量与对象变量
字段——绑定到类与对象的命名空间(Namespace)的普通变量,仅在这些类与对象所存在的上下文中有效。这就是它们被称作“命名空间”的原因。
字段有两种类型:类变量和对象变量
通过self分配是对象变量。
当一个对象变量与一个类变量名称相同时,类变量将会被隐藏。
使用装饰器(Decorator)将方法标记为类方法:@classmethod
所有的类成员都是公开的,但有一个例外:如果你使用数据成员并在名字中使用双下划线作为前缀,形如_privatervar这样的形式,Python会使用名称调整来使其有效地成为一个私有变量。
继承
如果在子类中定义了__init__方法,Python不会自动调用基类的构造方法,必须自己显式地调用它。
可以通过在方法名前面加上类名作为前缀,再将其传入self和其余变量中来调用基类的方法。
支持多重继承