VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Python3基础之类和对象(一)

一、定义类

在面向对象的程序设计中有两种重要概念:

  • 类:可以理解为一个种类,一个模型,是一种抽象的东西。
  • 实例、对象:可以理解为一种具体制作或者存在的东西。

定义类的语法格式如下:

1
2
3
4
class 类名:
    执行语句
    零到多个类变量
    零到多个类方法

例如我们需要制作一只碗,首先需要这个碗的模型就是类,在制作这个碗的过程就叫做实例化,制作出来的碗就是实例、对象;这个碗在中国制作,就是类变量;而这个碗的颜色、材料就是这个类的实例变量,具体请看下面代码:

1
2
3
4
5
6
7
8
9
10
11
class BowlModel:
    make_in = 'China'   # 类变量,不需要实例化就调用
    def __init__(self,colour = 'red',material = 'lron'): # __init__方法一般用来对实例的属性进行初始化
        # 下面两个是实例变量
        self.colour = colour
        self.material = material
        print ('颜色:',self.colour,'材料:',self.material)
 
    # 定义make方法
    def make(self,name):
        print (name,'制作了一只',self.colour,self.material,'碗。')  

关于网上一些说__init__是构造函数,一些说__new__才是真正的构造函数,这里找了一些资料大致解析如下:

老式类中其实并没有 __new__ 方法,因为 __init__ 就是它的构造方法(函数)。

新式类允许开发者根据他们的意图来重写 __new__ 和 __init__ 方法。__new__ (构造函数)单独地创建一个对象,而 __init__ (初始化函数)负责初始化这个对象。

 

二、使用和创建对象

创建对象时,实际是调用了__new__方法,返回当前对象的一个实例,当实例被创建出来后,会调用__init__方法,对当前对象的实例初始化,没有返回值。

创建对象例:

1
2
3
4
5
6
7
8
9
10
11
12
# 调用BowlModel的构造方法,返回一个BowlModel对象
# 在创建实例对象时,__ini__执行了一次
# 将BowlModel对象赋值给a变量
= BowlModel()
'''
这里在执行时,过程可以理解为:
a = object.__new__(BowlModel)
print (a) # 返回当前对象的实例,打印 <__main__.BowlModel object at 0x0000000002E2CCC0>
print (BowlModel.__init__(a)) # 执行了一次__init__方法,打印 颜色: red 材料: lron  返回 None
 
'''
print (a)   # 打印 <__main__.BowlModel object at 0x0000000002E2CD68>