python(类的封装调用/继承/多态)
class Student(object):
pass
class 后面紧接着是类名,即 Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用 object类,这是所有类最终都会继承的类。
- class定义类
- class 后面加 类名称 加 () 加 :
2.类名称定义规范:
- 不要以纯数字命名
- 不要以python中保留字符(关键字)来命名
- 不要以文件名命名
- 不能出现特殊字符
- 要简短且见名知义
- 当类名称中有多个单词时,应采用驼峰式(每个单词首字母大写) --> XinFangShuo()
定义好了 Student 类,就可以根据 Student 类创建出 Student 的实例,创建实例是通过类名+()实现的:
bart = Student()
可以看到,变量 bart 指向的就是一个 Student 的实例,而 Student 本身则是一个类。
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
注意:特殊方法“__init__”前后分别有两个下划线!!!
bart = Student('Bart Simpson', 59)
和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量 self,并且调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认
class Four(): #类的定义
def sub(self,x,y):
return x + y
"""
class Dog():
def __init__(self,name,age):
self.name = name
self.age = age
def sit(self):
print (self.name.title() + ' ' + "is now sitting")
def roll_over(self):
print (self.name.title() + ' ' + "is now roll over")
my_dog = Dog('willie',6) #参数实例化
# your_dog = Dog('lucy',3)
my_dog.sit()
my_dog.roll_over()
"""
"""
class Four_operations():
def __init__(self,a,b):
self.a = int(a)
self.b = int(b)
def add(self):
return self.a + self.b
def reduce(self):
return self.a - self.b
def ride(self):
return self.a * self.b
def Except(self):
return self.a / self.b
operation = Four_operations('12','4')
print (operation.add())
print (operation.reduce())
print (operation.ride())
print (operation.Except())
"""
class ReadWrite():
"""
txt文件读取类
"""
def __init__(self,filepath):
self.filepath = filepath
def read(self,index=0):
with open(self.filepath) as book:
return book.read().splitlines()[index]
def write(self,body):
with open(self.filepath,"w") as book:
book.write(body)
ReadWrite("d:\\test1.txt").write("大家好,我是郑迎!")
print (ReadWrite("d:\\test1.txt").read())
#coding=utf-8
mysql = {"}
class LoginRegister():
"""
登录注册函数封装实现如下:
1.登录mysql中的账号密码成功
2.密码错误则重新输入密码
3.账号错误调用注册方法进行注册,注册成功后调用登录方法登录已注册的账号
"""
def login(self):
user = input("username:")
if user in mysql.keys():
for i in range(3):
pwd = input("password:")
if pwd == mysql.get(user):
print ("Login ok")
break
else:
print ("密码输错三次,将锁定账号!")
else:
print ("Please register first!")
LoginRegister().register()
def register(self):
user = input("Input you username:")
while True:
pwd = input("Input you password:")
repwd = input("Input you password again:")
if repwd == pwd:
mysql.setdefault(user,pwd)
print ("Register ok,sign in now!")
LoginRegister().login()
break
else:
print ("两次密码不一致,请重新输入!")
LoginRegister().login()
- 当类中初始化方法__init__中存在参数时,则在实例化时,需要往实例括号中传入参数
- 当类中无初始化方法或者__init__中不存在参数时,则在实例化时,不需要往实例括号中传入参数,而在调用方法时再进行传参
class Four():
def sub(self,x,y):
return x + y
print Four().sub(2,3)
class Four_operations():
def __init__(self,a,b):
self.a = int(a)
self.b = int(b)
def add(self):
return self.a + self.b
def reduce(self):
return self.a - self.b
def ride(self):
return self.a * self.b
def Except(self):
return self.a / self.b
operation = Four_operations(') #实例化
print (operation.add())
print (operation.reduce())
print (operation.ride())
print (operation.Except())
- 一个对象使用另一个对象的属性和方法,被继承的类也称父类
- 多重继承就是一个子类继承多个父类
class Four():
def sub(self,x,y):
return x + y
class Five(Four): #Five类继承了Four类 --> Five 类拥有了 Four 类下的所有函数方法
def jian(self,a,b):
return a - b
print (Five().sub(2,5))
class Father():
def __init__(self,name,sport,sex):
self.name = name
self.sport = sport
self.sex = sex
def Surname(self):
print (self.name + "姓张")
def hobby(self):
print (self.name + "like" + " " + self.sport)
class Son(Father):
def study(self):
print (self.name + " " + "study very good")
def Sex(self):
print (self.name + " " + "is" + " " + self.sex)
so = Son('张四',"play basketball","boy")
so.Surname()
so.hobby()
so.study()
so.Sex()
class car():
"多继承"
def __init__(self,brand,type,year,mileage):
self.brand = brand
self.type = type
self.year = year
self.mileage = mileage
def make(self):
print (self.brand + self.type + "是" + str(self.year) + "生产的!")
def update_mileage(self,mile):
if mile < self.mileage:
print ("请勿修改里程数!")
class aircraft():
def __init__(self,name,destination):
self.name = name
self.destination = destination
def bound(self):
print (self.name + "开往" + self.destination)
class boat(car,aircraft):
def __init__(self,brand,type,year,mileage,name,destination):
self.brand = brand
self.type = type
self.year = year
self.mileage = mileage
self.name = name
self.destination = destination
my_boat = boat("泰坦","尼克号",2010,500,"泰坦尼克号","宁波")
my_boat.make()
my_boat.bound()
class Four():
def sub(self,x,y):
return x + y
class Five(Four): #Five类继承了Four类 --> Five 类拥有了 Four 类下的所有函数方法
def jian(self,a,b):
return a - b
def sub(self,x,y):
return x * y
print (Five().sub(3,6))
python(类的封装调用/继承/多态)的更多相关文章
- python第三十一天-----类的封装、继承,多态.....
封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. cla ...
- python类的封装与继承
封装 关注公众号"轻松学编程"了解更多. 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义本身就是封装的体现. 狭义的封装:一个类的某些属性, ...
- 孤荷凌寒自学python第二十三天python类的封装
孤荷凌寒自学python第二十三天python类的封装 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.从怎么样访问类的内部代码块中定义的私有属性说起 类中定义的私有属性和私有方法是无法被 ...
- python面向对象(封装、继承、多态)+ 面向对象小栗子
大家好,下面我说一下我对面向对象的理解,不会讲的很详细,因为有很多人的博客都把他写的很详细了,所以,我尽可能简单的通过一些代码让初学者可以理解面向对象及他的三个要素. 摘要:1.首先介绍一下面向对象 ...
- Java—类的封装、继承与多态
一.类和对象 1.类 类是数据以及对数据的一组操作的封装体. 类声明的格式: 类声明 { 成员变量的声明: 成员方法的声明及实现: } 1.1 声明类 [修饰符] class 类<泛型> ...
- java类的封装、继承、多态
一.封装(encapsulation) 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系.封装的特 ...
- c++的类的封装/继承/多态的简单介绍
本篇文章仅仅从很表层来介绍一个C++语言中的类,包括什么是类,类的封装性/继承性和多态性.高手直接跳过吧,看了浪费时间,新手或者想温习一下的可以浏览看看. 1. 什么是类? 到底什么是类(class) ...
- Python中的封装,继承和多态
面向对象的三大特性:封装,继承和多态 封装:在类的内部定义属性和方法,通过对象或类名来访问属性和方法,隐藏功能的实现细节,也可以设置访问权限. 广义的封装:实例化一个对象,给对象空间封装一些属性:狭义 ...
- python面向对象编程 -- 封装、继承
面向对象编程 -- 封装.继承 面向对象编程三要素:封装.继承和多态.本文主要看和封装.继承相关的概念:在python中多态的概念比较模糊,本文不做讨论. 1 封装 封装:将数据和操作组装到一起,对外 ...
随机推荐
- Java基础 三目运算符 在嵌套时,使用括号
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- <img>的title和Alt有什么区别?
Alt是<img>的特有属性,是图片内容的等价描述,用于图片无法加载时显示,读屏器阅读图片. title 可提高图片高可访问性,除了纯装饰图片外都必须设置有意义的值,搜索引擎会重点分析.鼠 ...
- 001-脚手架发展,基础代码结构+mybatis代码生成
一.概述 脚手架是为了保证各施工过程顺利进行而搭设的工作平台. 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具. java变成中,架构师搭建的代码结构你到处拷 ...
- django安装使用xadmin
Xadmin介绍 直接替换掉Django自带的admin系统,并提供了很多有用的东西:完全的可扩展的插件支持,基于Twitter Bootstrap的漂亮UI. 完全替代Django admin 支持 ...
- pytorch中调用C进行扩展
pytorch中调用C进行扩展,使得某些功能在CPU上运行更快: 第一步:编写头文件 /* src/my_lib.h */ int my_lib_add_forward(THFloatTensor * ...
- 基于EasyNVR摄像机无插件直播方案二次开发实现自己的摄像机IPC-NVR无插件化直播解决方案
背景介绍 在之前的博客中<基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控>,对EasyNVR所实现的功能我们已经有较多描述,这些也在方案地址:http://ww ...
- 【解决篇】映美FP-530K+打印发票卡纸,色带安装问题
之前由于色带变浅了,而换了色带,后来出现了发票经常中间卡纸的状况,不过也不是不能打,只是偶尔出现,发现每次打,发票纸会撞击一下色带,导致有时候发票会被色带挡一下,导致中间卡纸,有时候又能过去.后来通过 ...
- css3逐帧动画
写css3动画的时候,我们经常用到animation来实现,默认情况下,animation是属于连贯性的ease动画.我们熟悉的animation动画有ease.ease-in.ease-out.li ...
- 第07组 Beta冲刺(1/4)
队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:学习了很多东西 Github签入记录 接下来的计划:继续学习 还剩下哪些任务:后端部分 燃尽图 遇到的困难:自己太菜了 收获和疑问: ...
- 【LeetCode】最长回文子串【动态规划或中心扩展】
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: " ...