python之路——23
复习
1.类定义
函数--方法--动态属性
必须传self
变量--类属性--静态属性
__init__方法--初始化方法
2.实例化
1.使用:对象 = 类()
2.实例和对象没有区别
3.对象调用方法
学习内容
1.类中的静态变量,可以被对象和类调用
2.对于不可变数据类型,类变量最好用类名操作
3.对于可变数据类型,对象名的修改是共享的,重新赋值是独立的
4.认识绑定方法
5.面向对象的三大特性:继承,多态,封装
6.组合: 一个对象的属性值是另一个类的对象
代码区
1.正方形周长和面积
class Square:
def __init__(self,side_len):
self.side_len = side_len
def perimeter(self):
return self.side_len * 4
def area(self):
return self.side_len **2
2.创建一个类,每次实例化时,纪录实例信息
class Food:
catagory = {}
def __init__(self,kind,calorie):
self.kind = kind
self.calorie = calorie
Food.catagory.setdefault(self.kind, self.calorie)
a1 = Food('carrot',110)
a2 = Food('meat',1000)
print(a1.catagory)
print(Food.catagory)
3.圆环面积周长,组合的方式
from math import pi
class Circle:
def __init__(self,radius):
self.radius = radius
def area(self):
return self.radius**2*pi
def perimeter(self):
return 2*pi*self.radius class Ring:
def __init__(self,outside_r,inside_r):
self.outside_r = outside_r
self.inside_r = inside_r
self.outside_c = Circle(outside_r)
self.inside_c = Circle(inside_r)
def area(self):
return self.outside_c.area() - self.inside_c.area()
def perimeter(self):
return self.outside_c.perimeter() + self.inside_c.perimeter() r1 = Ring(2,1)
4.老师-生日 类的组合
import time
class Teacher:
def __init__(self,name,age,birthday):
self.name = name
self.age = age
self.birthday = birthday
self.course = Course('language',2000)
class Birthday:
def __init__(self,year,month,day):
self.year = year
self.month = month
self.day = day
class Course:
def __init__(self,name,price):
self.name = name
self.price = price b1 = Birthday(2111,2,1)
a1 = Teacher('alex', 'Language',b1)
print(a1.birthday.year)
print(a1.course.price)
python之路——23的更多相关文章
- 【python之路23】递归
1.递归的基础 举例说明:老师要班里坐在最后的一排学生要一本书,老师对前面的人说你向最后一排的同学要一本书,那么最前面的人跟坐在第2排的人说,第2排的人跟第3排的人说,当命令传递到最后一排时,最后一排 ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- Python之路【第十九篇】:爬虫
Python之路[第十九篇]:爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之路【第十七篇】:Django【进阶篇 】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十六篇】:Django【基础篇】
Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...
- Python之路【第十五篇】:Web框架
Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- Python之路【第八篇】:堡垒机实例以及数据库操作
Python之路[第八篇]:堡垒机实例以及数据库操作 堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient ...
随机推荐
- JavaScript原型链及继承
在JavaScript中,所有的东西都是对象,但是JavaScript中的面向对象并不是面向类,而是面向原型的,这是与C++.Java等面向对象语言的区别,比较容易混淆,因此把我自己学习的过程记录下来 ...
- HBase学习笔记1 - 如何编写高性能的客户端Java代码
转载请标注原链接:http://www.cnblogs.com/xczyd/p/5577124.html 客户在使用HBase的时候,经常会抱怨说写入太慢,并发上不去等等.从前我遇到这种情况,一般都二 ...
- leetcode 381.Insert Delete GetRandom
这道题中要求使用O(1)的方法来删除和插入元素的,那么首先需要寻找到对应的元素,这个可以使用map的O(1)的查询时间的,然后是删除对应的元素的,那么可以根据 堆排序中类似的做法把最后面的元素插入到前 ...
- 如何配置Tomcat以使用Apache httpd?
How to Connect Tomcat 6 to Apache HTTP Server 2 Tomcat can be run as a standalone server. Tomcat can ...
- 当进行服务端渲染的时间,某些npm包可能会调用document,window这些对象而导致报错
1.在didmount里面使用require引入 require.ensure([], (require) => { this.setState({ picker: require('./Pic ...
- 我的代码-date
# coding: utf-8 # In[24]: import timeimport datetimelocaltime = time.asctime( time.localtime(time.ti ...
- 如何将本地git仓库中的代码上传到github
1, 在github上新建一个仓库,比如为:CSS3Test,仓库地址为:https://github.com/hyuanyuanlisiwei/CSS3Test 2,本地git仓库中的文件项目为C ...
- ubuntu18.04 配置chrome ss
为了FQ 不FQ不行啊 安装shaowsocks 1. 用实验室的服务器 sslocal -c xxx.json 2. 下载SwitchyOmega插件 链接: https://pan.baidu.c ...
- js 实现操作浏览器或者元素的全屏与退出全屏功能
<!DOCTYPE html> <html lang="en" id="div1"> <head> <meta cha ...
- asp.net 按钮执行前后台方法——前台弹出提示信息,确认后继续执行后台方法,取消则不执行后台方法
我们做一个测试的web页面,只需要一个button+一个label就ok啦,通过button按钮的后台事件修改label的text属性值来测试是否执行了后台事件里的代码 前台 写一个js方法: < ...