定义一个类

Python中,定义类的方式是:class classname():

class cat():def __init__(self, name, age):#Python中的构造函数,初始化四个成员变量self.name=nameself.age=ageself.size='small'self.hungrystat=False;print('__init__ function run')#四个成员变量def sit(self):print(self.name.title()+'is sitting')def roll(self):print(self.name.title()+'is rolling')def sethungrystat(self, hungrystat):self.hungrystat=hungrystatinstance=cat('tom',1)#实例化
instance.sethungrystat(hungrystat=True)#修改成员变量的状态
print(instance.hungrystat)

class cat():表示创建一个类,类名是cat,后面的括号和分号不能省略,缩进部分表示类中的函数

每个类中都有__init__函数,在类被实例化时调用,类似于C++中的构造函数,Python直接在__init__函数中声明并初始化成员变量(self.name=name self.age=age)

成员变量可以在__init__函数中随意添加,例如self.size

self代表类的实例本身,当执行 instance=cat('tom',1)后,instance就是cat的一个实例,self就是instance,self类似于C++中的this指针,当调用成员函数时,self自动传入成员函数

可以通过成员函数来修改变量的值,比如cat类中的sethungrystat函数

类的继承

Python中,继承类的方式是:class classname(parentclassname):

class cat():def __init__(self, name, age):self.name=nameself.age=ageself.size='small'self.hungrystat=False;print('__init__ function runs')def sit(self):print(self.name.title()+'is sitting')def roll(self):print(self.name.title()+'is rolling')def sethungrystat(self, hungrystat):self.hungrystat=hungrystatclass cat1(cat):#父类是cat,子类叫cat1,def __init__(self, name, age, color):print('__init__ in cat1 runs')super().__init__(name, age)self.color=color#子类独有的成员变量def roll(self):#子类中重写父类的roll函数print(self.name.title()+'is rolling in cat1')instance=cat('tom',1)
instance.roll()#调用父类的roll函数
instance.sethungrystat(hungrystat=True)
print(instance.hungrystat)print('----------------')instance1=cat1('jerry',1)
instance1.sit()#调用父类的sit函数
instance1.roll()#调用子类的roll函数
print(instance1.color)

子类__init__函数中的super函数返回父类的实例,然后调用父类的init方法

python中,子类继承父类时,子类会继承父类所有的成员函数和成员变量,同时子类可定义自己的成员变量和成员函数

cat1拥有cat的所有成员变量和函数,同时cat1自己定义了color成员

如果在子类中重写了父类的函数,在调用该函数时,子类的实例不会调用父类的方法,而是直接调用子类的方法

cat1中重写了父类的方法roll,所以cat1的实例在调用roll的时候,不会再调用父类的方法,而会调用子类的方法

如果在子类中没重写了父类的函数,在调用该函数时,子类的实例会调用父类的方法

子类cat1没有重写sit函数,所以子类调用的是父类cat的sit方法

导入类

import关键字不仅可以导入函数,也可以导入类,导入方式和函数类似

关于import的详细说明已经在我的博客Python知识点6——函数中详细说明

1.导入类

from classtest import cat, cat1instance=cat('tom',1) 

from classtest import cat, cat1表示从classtest.py文件导入两个类cat和cat1,当然也可以只导入一个

from classtest import cat, cat1也可以写为from classtest import *(导入所有类),这种写法不建议使用,容易引起命名冲突

2.导入模块

import classtest as ctinstance=ct.cat('tom',1)

参考:

《Python编程从入门到实践》

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

Python知识点7——类相关推荐

  1. python知识点学习——类

    参考资料:1.Python:函数和类_江南好-CSDN博客_python 类和函数 2.self参数 - __ init__ ()方法 super(Net, self).__init__()是什么_热 ...

  2. python如何创建一个类_python (知识点:类)简单的创建一个类

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ Created on Mon Nov 14 01:01:29 2016 ...

  3. 两句话轻松掌握python最难知识点——元类

    两句话掌握python最难知识点--元类 千万不要被所谓"元类是99%的python程序员不会用到的特性"这类的说辞吓住.因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知 ...

  4. 刻意练习:Python基础 -- Task10. 类与对象

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  5. 前辈说先学会了这些Python知识点,再谈学习人工智能、机器学习

    随着前面阿法尔go打败了围棋大师,让人工智能.机器学习大火了一把,然后学习人工智能和机器学习前提也需要掌握一定的Python知识点,那么学习这些前,我们究竟应该先掌握哪些Python知识点呢? 第一阶 ...

  6. tensorflow和python先学哪个-前辈说先学会了这些Python知识点,再谈学习人工智能!...

    原标题:前辈说先学会了这些Python知识点,再谈学习人工智能! 首先我们看一看Python的优势: 开源,跨平台. 社区.不要小看这一点.社区意味着有很多教程.书籍,出了问题很容易google到,乃 ...

  7. Python知识点笔记-面向对象进阶篇

    python知识点范围:magic method魔术方法 magic method魔术方法是前后有两个下划线的属性: 创建对象的方法def __new__(cls ),重写的话可能需要一个星号和两个星 ...

  8. Python 知识点笔记:走进面向对象

    Python知识点范围:走进面向对象 Object Oriented Programming面向对象简称oop: 复用性.灵活性.扩展性: 面向对象两个基本概念:类和对象: 对象包括属性和功能,封装性 ...

  9. Python 内编写类的各种技巧和方法

    简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...

最新文章

  1. Hololens2-Unity3D开发(一)
  2. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
  3. Hinton最新访谈:GPT-3和人脑比参数量仍少1000倍
  4. ViSP视觉库中实现AprilTag的方法
  5. .NET 中密封类的性能优势
  6. bzoj2287【POJ Challenge】消失之物 缺一01背包
  7. fcpx插件Title Pop:78个可自定义的Final Cut Pro X动画标题+ 2个额外背景
  8. 简单干净的C#方法设计案例:SFCUI.AjaxValue()之二
  9. Coursera视频无法观看的三种不同解决方法(亲测有效)
  10. BZOJ1588(HNOI2002)营业额统计
  11. 编程入门之C语言入门
  12. 巧用电池小工具 电量问题全掌握
  13. python判断手机号运营商_js判断手机号运营商的方法
  14. 安防人眼里的“区块链玩法遛狗也能赚钱”
  15. 集团企业邮箱申请哪家的好,怎么选择?
  16. flannel vxlan切换成host-gw
  17. java即时通讯im聊天源码,dubbo即时通讯im聊天源码,netty即时通讯im聊天源码,springboot即时通讯im聊天源码
  18. (详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例
  19. 小时代的成功可复制:郭敬明和他的大数据
  20. 内核线程注入(x64)

热门文章

  1. 软件测试体系划分与职业素养
  2. Ruby 2.2.0发布,支持增量式垃圾收集和符号的垃圾收集
  3. 三招教你如何判断ERP软件是否适用
  4. 【设置Oracle 11Gr2 RAC的归档模式】
  5. CISCO路由器配置基础2
  6. 2021fall Bloomberg校招
  7. jmeter测试webservice接口
  8. Linux/服务器常用操作
  9. java学习一 path与classpath
  10. 【转载】Eclipse 最常用快捷键 (动画讲解),最简单的一些快捷键