Python知识点7——类
定义一个类
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——函数中详细说明
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 *(导入所有类),这种写法不建议使用,容易引起命名冲突
import classtest as ctinstance=ct.cat('tom',1)
Python知识点7——类相关推荐
- python知识点学习——类
参考资料:1.Python:函数和类_江南好-CSDN博客_python 类和函数 2.self参数 - __ init__ ()方法 super(Net, self).__init__()是什么_热 ...
- python如何创建一个类_python (知识点:类)简单的创建一个类
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Created on Mon Nov 14 01:01:29 2016 ...
- 两句话轻松掌握python最难知识点——元类
两句话掌握python最难知识点--元类 千万不要被所谓"元类是99%的python程序员不会用到的特性"这类的说辞吓住.因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知 ...
- 刻意练习:Python基础 -- Task10. 类与对象
背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...
- 前辈说先学会了这些Python知识点,再谈学习人工智能、机器学习
随着前面阿法尔go打败了围棋大师,让人工智能.机器学习大火了一把,然后学习人工智能和机器学习前提也需要掌握一定的Python知识点,那么学习这些前,我们究竟应该先掌握哪些Python知识点呢? 第一阶 ...
- tensorflow和python先学哪个-前辈说先学会了这些Python知识点,再谈学习人工智能!...
原标题:前辈说先学会了这些Python知识点,再谈学习人工智能! 首先我们看一看Python的优势: 开源,跨平台. 社区.不要小看这一点.社区意味着有很多教程.书籍,出了问题很容易google到,乃 ...
- Python知识点笔记-面向对象进阶篇
python知识点范围:magic method魔术方法 magic method魔术方法是前后有两个下划线的属性: 创建对象的方法def __new__(cls ),重写的话可能需要一个星号和两个星 ...
- Python 知识点笔记:走进面向对象
Python知识点范围:走进面向对象 Object Oriented Programming面向对象简称oop: 复用性.灵活性.扩展性: 面向对象两个基本概念:类和对象: 对象包括属性和功能,封装性 ...
- Python 内编写类的各种技巧和方法
简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...
最新文章
- Hololens2-Unity3D开发(一)
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
- Hinton最新访谈:GPT-3和人脑比参数量仍少1000倍
- ViSP视觉库中实现AprilTag的方法
- .NET 中密封类的性能优势
- bzoj2287【POJ Challenge】消失之物 缺一01背包
- fcpx插件Title Pop:78个可自定义的Final Cut Pro X动画标题+ 2个额外背景
- 简单干净的C#方法设计案例:SFCUI.AjaxValue()之二
- Coursera视频无法观看的三种不同解决方法(亲测有效)
- BZOJ1588(HNOI2002)营业额统计
- 编程入门之C语言入门
- 巧用电池小工具 电量问题全掌握
- python判断手机号运营商_js判断手机号运营商的方法
- 安防人眼里的“区块链玩法遛狗也能赚钱”
- 集团企业邮箱申请哪家的好,怎么选择?
- flannel vxlan切换成host-gw
- java即时通讯im聊天源码,dubbo即时通讯im聊天源码,netty即时通讯im聊天源码,springboot即时通讯im聊天源码
- (详细版Win10+Pycharm)YOLOX——训练自己的VOC2007数据集,以NWPU VHR-10 dataset为例
- 小时代的成功可复制:郭敬明和他的大数据
- 内核线程注入(x64)