类定义,类实例和类初始化


01.python中使用class关键字来定义类,其格式为:

class 类名:
    语句块
  • 类定义的特性包括:

    • 类的定义必须使用class关键字。
    • 类名应该使用大驼峰命名方式。
  • 类定义的示例:

    class MyClass(object):
      name = "wenjun"
    
      def run(self):
          return "I can run"
    • 类中定义的变量和方法统称为类的属性。
      • 类中定义的方法是类的属性,其为一个函数,只有类的实例化对象才能调用。
      • 类中定义的方法是method方法对象,不是函数对象function;它必须有至少一个参数,且第一个参数必须是self(实例化的对象本身)。
  • 类定义完成后,就产生了一个类对象,绑定到了类名上。

    • 类对象是类类型(type)的对象。
    • 类对象可以直接调用,比如直接获取其类属性:print(MyClass.name)
  • 类在第一行用三引号引用的内容称为文档字符串,可以直接使用类名__doc__的方式获取,比如:

class MyClass(object):
    """This a example of Class"""
    name = "wenjun"

    def run(self):
        return "I can run"

print(MyClass.__doc__)


02.直接引用一个类时,便完成了类的实例化,其格式为:

对象名 = 类名()
  • 类实例化是一个构造加初始化的过程:
    • 类实例化是将一个抽象的概念具体化为一个实例(new方法),并对这个实例赋予一些初始的标识符(__init__方法)。
    • 类实例化后对象名会对应内存中的一个地址,该地址中存储着实例化后的对象。
    • 类实例化后一定会获得一个对象,该对象称为实例对象。
      • 每次一实例化同一个类,即使使用相同的参数,也一定会获得完全不同的实例对象。
    • 类实例化后,会自动调用__init__方法,这个方法的第一个参数必须是self,其他参数随意。
  • 类实例化示例:
class MyClass(object):
    name = "wenjun"
    def run(self):
        return "I can run"

result = MyClass()
print(result.name)
print(result.run())
  • 当调用对象中的方法(result.run)时,实际上是把result.run()绑定到了MyClass类中的run属性上。
    • 类定义方法时必需一个self参数,当调用实例对象的方法时,便是将这个实例对象作为参数传给了类方法。
    • 类定义中的self,代表该类的任何实例对象本身。


03.使用__init__方法可以对对象进行初始化。

  • 类初始化示例:
class MyClass(object):

    def __init__(self):
        self.name = "wenjun"
        self.age = "35"

    def info(self):
        print("name is %s, age is %s" % (self.name, self.age))
  • 类实例化中的初始化过程实际上就是调用了类中的__init__()方法。
  • 类中如果没有定义初始化方法,则会生成一个默认的__init__()方法,其内容为空(隐式调用)。
  • 初始化方法可以有多个参数,第一个参数必须是self,其后的参数表示创建该对象时传入的参数,比如:
class MyClass(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print("name is %s, age is %s" % (self.name, self.age))

result = MyClass('wenjun','35')
print(result.name)
print(result.age)
result.info()
  • 类在初始化的过程中,会将构建出的对象(result)作为第一个参数传递给__init__()方法,即self形参。
  • self代表传递进来的对象实例,即如果要对对象初始化,则变量必须作用于对象上,因此必须要写明self。
    • 在类的定义中,不以self开头的变量,称为类的属性。
      • 类的属性是共享的,即类的属性发生改变,实例中该属性也会发生改变。
    • 在类的定义中,以self开头的变量,称为的对象的属性或者实例的属性。
      • 对象的数据必须在实例化后才能通过对象获取。
    • self之后的形参对应实例化对象时传入的实参。
  • 初始化函数中不应该有返回值。
  • 类的定义中,所有方法(包括初始化方法)都可以对类的属性,和实例的属性进行修改。
文档更新时间: 2021-02-01 22:56   作者:闻骏