← 返回首页
Python3基础教程(三十二)
发表时间:2022-04-06 10:16:43
类和对象

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。

1.类和对象

类是对象的抽象,对象是类的具体。

定义类的语法如下:

class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

python的面向对象的语法特征与Java等其它面向对象语言十分类似,学过Java的同学可以迅速掌握本节内容。其中与Java语言有显著区别的主要体现在以下几点:

实例:

# -*- coding: utf-8 -*-
# @Time : 2022/4/6 10:42
# @File : studentsdemo.py
# @Software : PyCharm

class Students:
    # 类属性
    major = None

    # 构造方法
    def __init__(self, name, gender, age):
        self.name = name
        self.gender = gender
        self.age = age

    # 成员方法
    def study(self):
        print(self.name, "is good good study,day day up!")
        print(self.name, " my major is:", self.major)
        return

    # toString()方法
    def __str__(self):
        return "姓名:%s , 性别:%s, 年龄:%d" % (self.name, self.gender, self.age)

p = Students('张三', '男', 20)
p.study()
p.major = '软件工程'
p.study()

运行结果:

张三 is good good study,day day up!
张三  my major is: None
张三 is good good study,day day up!
张三  my major is: 软件工程

2.构造方法重载

Python的构造函数是不能重载一个类只能有一个构造函数存在。定义多个构造方法时,实例化类只实例化最后的构造方法,即后面的构造方法会覆盖前面的构造方法,并且会根据最后一个构造方法的形式进行实例化。但是我们在很多时候,希望可以实现构造函数重载的效果,怎么去实现呢?我们可以通过关键字参数达到构造函数重载的效果。

代码如下:

class MyClass(object):
    def __init__(self, **kwargs):
        for key, val in kwargs.items():
            setattr(self, key, val)


a = MyClass(name='xiaoming', gender='女')