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

一、python 类

1 创建类

使用 class 关键字

实例

使用名为 x 的属性,创建一个名为 MyClass 的类

class MyClass:
x = 5

2 创建对象

现在我们可以使用名为 myClass 的类来创建对象:

实例

创建一个名为 p1 的对象,并打印 x 的值:

p1 = MyClass()
print(p1.x)

3 __init__() 函数

  上面的例子是最简单形式的类和对象,在实际应用程序中并不真正有用。要理解类的含义,我们必须先了解内置的 __init__() 函数。所有类都有一个名为 __init__() 的函数,它始终在启动类时执行。使用 __init__() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作:

实例

创建名为 Person 的类,使用 __init__() 函数为 name 和 age 赋值:

class Person:
def __init__(self, name, age):
self.name = name
self.age = age p1 = Person("Bill", 63) print(p1.name)
print(p1.age)

注释:每次使用类创建新对象时,都会自动调用 __init__() 函数。

4 对象方法

  对象也可以包含方法。对象中的方法是属于该对象的函数。让我们在 Person 类中创建方法:

实例

插入一个打印问候语的函数,并在 p1 对象上执行它:

class Person:
def __init__(self, name, age):
self.name = name
self.age = age def myfunc(self):
print("Hello my name is " + self.name) p1 = Person("Bill", 63)
p1.myfunc()

提示:self 参数是对类的当前实例的引用,用于访问属于该类的变量。

self 参数

  self 参数是对类的当前实例的引用,用于访问属于该类的变量。它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数:

实例

使用单词 mysillyobject 和 abc 代替 self:

class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age def myfunc(abc):
print("Hello my name is " + abc.name) p1 = Person("Bill", 63)
p1.myfunc()

修改对象属性

把 p1 的年龄设置为 40:

p1.age = 40

删除对象属性

del p1.age

删除对象

del p1

二、继承

  继承允许我们定义继承另一个类的所有方法和属性的类。父类是继承的类,也称为基类。子类是从另一个类继承的类,也称为派生类。

1 创建父类

任何类都可以是父类,因此语法与创建任何其他类相同:

实例

创建一个名为 Person 的类,其中包含 firstname 和 lastname 属性以及 printname 方法:

class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname def printname(self):
print(self.firstname, self.lastname) # 使用 Person 来创建对象,然后执行 printname 方法: x = Person("Bill", "Gates")
x.printname()

2 创建子类

要创建从其他类继承功能的类,请在创建子类时将父类作为参数发送:

实例

创建一个名为 Student 的类,它将从 Person 类继承属性和方法:

class Student(Person):
pass

实例

使用 Student 类创建一个对象,然后执行 printname 方法:

x = Student("Elon", "Musk")
x.printname()

添加 __init__() 函数

  到目前为止,我们已经创建了一个子类,它继承了父类的属性和方法。我们想要把 __init__() 函数添加到子类(而不是 pass 关键字)。

注释:每次使用类创建新对象时,都会自动调用 __init__() 函数。

实例

为Student 类添加 __init__() 函数:

class Student(Person):
def __init__(self, fname, lname):
# 添加属性等

当您添加 __init__() 函数时,子类将不再继承父的 __init__() 函数。

注释:子的 __init__() 函数会覆盖对父的 __init__() 函数的继承。

如需保持父的 __init__() 函数的继承,请添加对父的 __init__() 函数的调用:

实例

class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)

使用 super() 函数

Python 还有一个 super() 函数,它会使子类从其父继承所有方法和属性:

实例

class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)

添加属性

实例

把名为 graduationyear 的属性添加到 Student 类:

class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear = 2019

添加方法

实例

把名为 welcome 的方法添加到 Student 类:

class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear = year def welcome(self):
print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

python类、继承的更多相关文章

  1. python 类继承演示范例的代码

    把做工程过程重要的代码片段备份一次,下面的资料是关于python 类继承演示范例的代码. # a simple example of a class inheritance # tested with ...

  2. python类继承

    面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过 继承 机制.继承完全可以理解成类之间的 类型和子类型 关系. 假设你想要写一个程序来记录学校之中的教师和学生情况.他们有一些 ...

  3. Python 类继承,__bases__, __mro__, super

    Python是面向对象的编程语言,也支持类继承. >>> class Base: ... pass ... >>> class Derived(Base): ... ...

  4. Python类继承(转发)

    目录 一.概述 二.类的继承 2.1 继承的定义 2.2 构造函数的继承 2.3 子类对父类方法的重写 三.类继承的事例 回到顶部 一.概述 面向对象编程 (OOP) 语言的一个主要功能就是“继承”. ...

  5. 第7.7节 案例详解:Python类继承机制

    本节实现一个类继承的小程序,下面一边结合代码一边介绍相关继承的知识.例子以车.汽车为例,车为父类.汽车为子类. 一.    定义父类Vehicle class Vehicle():    def __ ...

  6. python 类 - 继承

    继承 什么是继承? 编写类时,并非总要从空白开始.如果要编写的类是另一个现成类的特殊版本,可使用继承. 一个类继承另一个类时,将自动获得另一个类的所有属性和方法.现有的类称为父类,而新类称为子类. 子 ...

  7. python类继承的重写和super

    给已经存在的类添加新的行为,继承是非常好的实现方式.但是如果要改变行为呢?比如在Python继承扩展内置类,我们的contact类只允许一个名字和一个邮箱,但是如果要对某些人增加电话号码呢?这里可以通 ...

  8. python 类继承与子类实例初始化

    From: https://blog.csdn.net/cs0301lm/article/details/6002504?utm_source=blogxgwz4 [ 先贴参考书籍原文(中文英文对照) ...

  9. python 类继承

    #!/usr/bin/python # Filename: inherit.py class SchoolMember: '''Represents any school member.''' def ...

  10. Python类继承,方法重写及私有方法

    # -*- coding: utf-8 -*- """ Created on Mon Nov 12 15:05:20 2018 @author: zhen "& ...

随机推荐

  1. Laravel Ignition 2.5.1 代码执行漏洞(CVE-2021-3129)

    影响范围 Laravel 框架 < 8.4.3 facade ignition 组件 < 2.5.2 poc git clone https://github.com/simonlee-h ...

  2. C作用域

    任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问.C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 在所有函数外部的全局变量 在形式参数的函数参数定义中 局 ...

  3. 【LeetCode】424. 替换后的最长重复字符

    424. 替换后的最长重复字符 知识点:字符串,滑动窗口: 题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含 ...

  4. 【javaFX学习】(三) 控件手册

    移至http://blog.csdn.net/qq_37837828/article/details/78732605 更新 这里写的控件可能不是所有的控件,但是应该是比较齐全并足够用的了,后面还有图 ...

  5. Skywalking-06:OAL基础

    OAL 基础知识 基本介绍 OAL(Observability Analysis Language) 是一门用来分析流式数据的语言. 因为 OAL 聚焦于度量 Service . Service In ...

  6. UserControl 加载动画

    效果:实现加载UserControl动画效果 cs代码如下 public class BaseModuleView : UserControl { private TranslateTransform ...

  7. .NET Core 微服务学习与实践系列文章目录索引(2019版)

    参考网址: https://archy.blog.csdn.net/article/details/103659692 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各 ...

  8. .NET Core程序发布报错:project.assets.json”没有“.NETCoreApp,Version=v3.1/win-x64”的目标。确保已运行还原,且“netcoreapp3.1”已包含在项目的 TargetFrameworks中。

    在控制台中使用命令发布.NET Core程序的时候,报如下的错误: project.assets.json"没有".NETCoreApp,Version=v3.1/win-x64& ...

  9. C# 多线程刷新UI

    2.利用委托调用--最常见的办法(仅WinForm有效)   using System; using System.Threading; using System.Windows.Forms; nam ...

  10. com 组件的本知识

    (今日看到网络上关于"COM中GUID......"文章,写的好,故记录之.)当初微软设计com规范的时候,有两种选择来保证用户的设计的com组件可以全球唯一:第一种是采用和Int ...