类定义,类实例和类初始化
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之后的形参对应实例化对象时传入的实参。
- 在类的定义中,不以self开头的变量,称为类的属性。
- 初始化函数中不应该有返回值。
- 类的定义中,所有方法(包括初始化方法)都可以对类的属性,和实例的属性进行修改。
文档更新时间: 2021-02-01 22:56 作者:闻骏