Python 类与对象

简介: Python基础入门类与对象。类,对象,实例化,属性,方法。继承,多态,方法重写,私有,封装。
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:Python 类与对象

@TOC


1.类与对象

Python 是一种面向对象的编程语言。
Python 中的几乎所有东西都是对象,拥有属性和方法。
类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。

在现实生活中,类是所有同种物体的统称,如:人类、鸟类等。

而对象则是一个类中的具体的一个个体,如:人类小明是人类的具体个体。

1.1 类的定义

在Python中,定义一个类的格式如下:
class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>
通常类中还包含一个初始化函数,帮助我们初始化对象的属性:
class ClassName:
    def __init__(self, ···):
        ···
    ···
    ···
    ···
让我们定义一个学生类,并实例化出一个对象:
class Student:
    # self 代表类的当前实例
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
stu1 = Student('小嗷犬', 18, '666') # 实例化
这样我们就可以通过类打印出 stu1的各个属性:
class Student:
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
stu1 = Student('小嗷犬', 18, '666')
print(stu1.name, stu1.age, stu1.ID)

1.2 类的方法

这种打印方法也可以写在类里:
class Student:
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
    def introduce(self):
        print(f'我叫{self.name},今年{self.age}岁,学号是{self.ID}')
stu1 = Student('小嗷犬', 18, '666')
stu1.introduce()

2.继承

2.1 单继承

Python 支持类的继承,派生类的定义如下所示:
class DerivedClassName(BaseClassName):
    <statement-1>
    .
    .
    .
    <statement-N>
子类(派生类 DerivedClassName)会继承父类(基类 BaseClassName)的属性和方法。

下面我们用学生类来派生一个大学生类:

class Student:
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
    def introduce(self):
        print(f'我叫{self.name},今年{self.age}岁,学号是{self.ID}')

class BigStudent(Student):
    def eat(self):
        print('我是大学生,我会吃大米饭。')

stu1 = BigStudent('小嗷犬', 18, '666')
stu1.introduce()
stu1.eat()

2.2 多继承

除此之外,Python还支持多继承,多继承的类定义形如下:
class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,Python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法。

2.3 方法重写

在派生类继承了父类方法后,可以对原有方法进行重写:
class Student:
    def __init__(self, name, age, ID):
        self.name = name
        self.age = age
        self.ID = ID
    def introduce(self):
        print(f'我叫{self.name},今年{self.age}岁,学号是{self.ID}')

class BigStudent(Student):
    def introduce(self):
        super().introduce()
        print('我已经是个大学生了。')

    def eat(self):
        print('我是大学生,我会吃大米饭。')

stu1 = BigStudent('小嗷犬', 18, '666')
stu1.introduce()
stu1.eat()
上例的大学生类重写了学生类的 introduce函数,其中用super()来调用父类函数。

3.私有属性与方法

Python中可以将属性或方法设为私有,使其只能在类的内部访问,语法格式为在属性或方法名前加两个下划线:
__private_attrs # 私有属性
__private_method # 私有方法

代码实例:

class Student:
    __name = None
    __age = None
    __ID = None
    
    def __init__(self, name, age, ID):
        self.__name = name
        self.__age = age
        self.__ID = ID
        
    def getName(self):
        return self.__name
    
    def getAge(self):
        return self.__age
    
    def getID(self):
        return self.__ID
stu1 = Student('小嗷犬', 18, '666')
print(stu1.getName(), stu1.getAge(), stu1.getID())
直接访问私有属性将会报错:
class Student:
    __name = None
    __age = None
    __ID = None
    
    def __init__(self, name, age, ID):
        self.__name = name
        self.__age = age
        self.__ID = ID
        
    def getName(self):
        return self.__name
    
    def getAge(self):
        return self.__age
    
    def getID(self):
        return self.__ID
stu1 = Student('小嗷犬', 18, '666')
print(stu1.__name)
目录
相关文章
|
4天前
|
C++ Python
Python中的类与对象
Python中的类与对象
6 1
|
7天前
|
Python
【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
【5月更文挑战第6天】【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
|
7天前
|
存储 程序员 Python
Python中自定义类实例化数组的艺术
Python中自定义类实例化数组的艺术
8 1
|
7天前
|
程序员 Linux C++
Python中的WinForms类桌面应用程序开发
Python中的WinForms类桌面应用程序开发
23 4
|
10天前
|
Java 开发者 索引
Python基础语法:类笔记
本篇博文是把自己在学习python类的过程中自己理解和笔记,一点一点总结的写出出来,做一个总结,加深对面向对象编程的理解。
|
14天前
|
数据可视化 索引 Python
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
|
18天前
|
缓存 Java Python
Python 弱引用全解析:深入探讨对象引用机制!
Python 弱引用全解析:深入探讨对象引用机制!
22 3
|
20天前
|
运维 Shell Sentinel
第八章 Python可迭代对象、迭代器和生成器
第八章 Python可迭代对象、迭代器和生成器
|
20天前
|
运维 算法 Shell
第六章 Python类(面向对象编程)
第六章 Python类(面向对象编程)
|
20天前
|
数据安全/隐私保护 Python
Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义
Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义