#Python#编程大神原来是这么来的,一篇文章带你走入大神的世界( 八 )



class cl1:    pass

而将类实例化成为对象可以使用类名后面加括号并直接赋值给一个对象 , 如a=cl1() , 那么a就是cl1这个类的一个对象 。
构造函数
构造函数也叫作构造方法 。 所谓构造方法就是专门用于初始化的方法 。 这里还需要介绍self , 一般在类中的方法必须加上self参数 , 其代表类本身 。 在Python中__init__(self参数)就是构造方法 , 构造方法的名字是固定的 , 在括号里面加上self以及对应的参数即可 。 构造函数的实际意义就是初始化 。

class cl2:    def __init__(self):        print(\"I am cl2 self!\")

如上述代码所示 , cl2类有一个构造方法 , 构造方法中会输出“I am cl2 self!” , 这就意味着该类只要创建对象就会首先执行这一串代码 。 如果想要给构造方法加上参数 , 在self后面加上参数即可 , 参数与参数之间通过逗号隔开 。

class cl3:    def __init__(selfnamejob):        print(\"My name is \"+name+\" My job is \"+job)

这样就相当于给类加上了参数 , 因为在实例化该类时会需要传递相应的参数 。 这里需要注意的是为类加上参数 , 并不是在类定义中的括号中加参数 , 在类定义中的括号是用于继承的 , 而不是用于加参数的 , 这里的加参数指的是在实例化时加上参数 。
属性和方法
属性就相当于是类中的变量 , 方法就相当于类中的函数 , 属性是静态的 , 方法是动态的 。 举例而言 , 对于“人”这个类 , 手、头这些都属于属性 , 而人会说话、写字这些都是方法 。 在Python里面 , 属性的使用方式一般是self.属性即可 。

class cl4:    def __init__(selfnamejob):        self.myname=name        self.myjob=job

在上述代码的cl4这个类的构造方法中 , 可以看到传递了两个参数 , 之后就在构造函数中变成了类的属性 。 接下来在使用到时候直接调用self.属性即可 。

class cl5:    def myfunc1(selfname):        print(\"hello \"+name) class cl6:    def __init__(selfname):        self.myname=name    def myfunc1(self):        print(\"hello \"+self.myname)

如上述代码所示 , 方法就是类里面的函数 , 包括__init__()也都是方法 。 上述的cl6就能为大家解释self为什么能够存在 , cl6中的__init__()和myfuncl()是两个函数 , 按照道理而言 , myname在不同的函数中都属于局部变量 , 是不能通用的 , 那么如果想让局部变量在多个函数之间传递 , 那么一种方法就是将变量存储到类里面 , 也就是创建self字段 , 将变量存到类里面 , 而self就提供了一个区域用于存储变量 , 这就是self存在的必要性 。
继承
简单而言 , 继承就是将某个类中所有的属性和方法都拿过来直接使用 , 举例而言:某一个家庭有父亲、母亲、儿子和女儿 , 父亲可以说话 , 母亲可以写字 , 大儿子继承了父亲 , 女儿同时继承了父母 , 并且有新能力听东西 , 小儿子继承了父亲 , 但是优化(或减弱)了父亲的说话能力 , 这样的模型应该如何建立呢?被继承的这个类被称为基类或者父类 , 继承的类叫做子类 。 所以模型中的服务都是基类 , 儿子和女儿都是子类 。
首先创建父亲类 , 他的功能是可以说话:

class father():    def speak(self):        print(\"I can speak!\")

接下来建立大儿子这个子类:

class son(father):    pass

该类继承了父亲类 , 所以在son类定义的时候括号里写上了father 。 虽然son类中没有写任何方法 , 但是其仍然拥有speak方法 , 这是因为其集成了father类的所有方法 。