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 封装 封装:将数据和操作组装到一起,对外 ...
随机推荐
- 人物-IT-李想:百科
ylbtech-人物-IT-李想:百科 李想,1981年10月出生于河北石家庄,80后企业家代表人物.曾先后创立泡泡网.汽车之家,现任车和家创始人及CEO. 1998年还在上高中的李想就开始做个人网站 ...
- NB-IoT物联网开发资料
OneNET(移动平台) https://open.iot.10086.cn/ NB-IoT套件提供了一种方便用户使用NB模组将设备连接到OneNET平台实现丰富NB-IoT应用的能力.平台为用户提供 ...
- 软件定义网络基础---REST API的设计规范
一:REST API的设计 REST API是基于HTTP协议进行设计的,由HTTP动词+URI组成 (一)HTTP动词 (二)资源的原型 文档(Document): 文档是资源的单一表现形式: 集合 ...
- [LeetCode] 66. Plus One 加一
Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The ...
- [LeetCode] 787. Cheapest Flights Within K Stops K次转机内的最便宜航班
There are n cities connected by m flights. Each fight starts from city u and arrives at v with a pri ...
- 阿里云盾AliYunDun服务IO超高
停止阿里云盾AliYunDun服务解决大量写磁盘问题-小内存ECS服务器 阿里云数据库在没备案,涉及大量IO操作时会自动启动阿里云盾这个服务,会导致服务器变得很卡,一直持续百分之99,一顿重启没有什么 ...
- Python微服务实践-集成Consul配置中心
A litmus test for whether an app has all config correctly factored out of the code is whether the co ...
- Springboot项目中异常拦截设计与处理
背景: 项目运行过程中会出现各种各样的问题,常见的有以下几种情况: 业务流程分析疏漏,对业务流程的反向操作.边界分析设计不充分 调用外部服务.调用外部系统出现的超时.错误.返回值与预期不符 外部资源连 ...
- npm包的语义版本控制(Semantic Versioning of Packages)
本文删改自Node.js 8 the Right Way Part I Chapter 3 npm 使用语义版本控制(SemVer)来寻找包的最佳可用兼容版本. 以安装测试框架mocha为例 $ ...
- Java反射桥接方法解析
在阅读mybaits源码的反射模块时,看到了如下的一段代码: /** * 添加 Method 数组到 uniqueMethods * @param uniqueMethods * @param met ...