python基础笔记之面向对象
# class Foo:
# name="kevin"
#
# def __init__(self,puppy):
# self.tomato= 'red'
# self.dog = puppy
# def bar(self,name):
# print('you are %s' % name)
# print('i am %s' % self.name)
#
# a = Foo('金毛') #这里传递的参数 是初始化 __init__
# a.bar('tugou')
# #上面的self指代类本身
#
# #上面的属性可以被串改,比如
# a.dog="二哈"
# print(a.dog)
#如何防止串改数据 就是把变量 或者方法 变成私有 加上_
# class Foo:
# name="kevin"
# def __init__(self,puppy):
# self.__tomato= 'red'
# self.__dog = puppy
# def bar(self):
# print(self.__dog)
#
# a = Foo("金毛")
# a.bar() #金毛
# a.__dog="二哈"
# a.bar() # 金毛 #面向对象的特点 : 封装,继承,多态
#继承
class Student:
def __init__(self,name,age):
self.name=name
self.age =age def detail(self):
print(self.name)
print(self.age) class PrimaryStudent(Student): #这里的student就是继承的上面的student 类
def lol(self):
print("不服 solo!") class CollegeStudent(Student):
def __init__(self,name,age,gf):
# 于是父级init会被直接overwrite
self.name = name
self.age = age
self.gf = gf def gf_detail(self):
print(self.gf) # a = PrimaryStudent('kevin',44)
# a.lol()
# a.detail() # b = CollegeStudent('kevin',32,'lara')
# b.detail()
# b.gf_detail() ##如何获得对象的信息 用type()
# print(type(None)) ##isinstance()可以判断一个对象是否是某种类型(包括继承关系)
# class A:
# pass
# class B(A):
# pass
# class C(B):
# pass
# y = C() # print(isinstance(y,B)) #判断是否和类C有继承关系 #使用dir()方法获得一个对象的所有属性和方法 ,可以使用dir()函数,它返回一个包含字符串的list
# print(dir(Student)) #如何重写内置的规则 比如如何重置计算长度的内置方法
# class yObjest:
# # test = 1
# def __len__(self):
# return 1234
#
# a = yObjest()
# print(a.__len__()) #获取内置对象的属性 或者是判断内置对象 以及设置对象
# print(hasattr(a,'x')) #判断对象是否有x属性
# print(setattr(a,'x',1))#给对象设置一个属性值
# print(hasattr(a,'x'))#再次判断对象 是否有x属性
# print(getattr(a,'x'))#结果有了 查看x属性
# print(getattr(a,'x',404))#结果有了 查看x属性 如果没有则返回404
# print(yObjest.test) #如何直接删除一个类的属性
# class yObjest:
# test = 1
# def __len__(self):
# return 1234
#
# a = yObjest()
# a.test=2
# print(a.test)
# del a.test
# print(a.test) #模块和包 : python的程序由包(package) ,模块(module)和函数组成,包是由一系列模块组成的集合,模块是处理某一类问题的函数和类的集合
# 包就是完成特定任何的工具箱,python 提供了许多有用的工具包,入2字符串处理,图形用户接口,web应用,图形图像处理等。这些自带的工具包和模块安装在python的安装目录下lib子目录中
# import sys
# print(sys.path) #如果发现自己引用的包不存在的时候,怎么办 先调用上面的sys.path方法,如果发现系统引用的位置不包括我们安装的包 用 sys.path.append('包的路径')添加包的路径
# print(sys.path.append('包的路径')) #模块的导入方法
#第一种就是上面的import方式
#第二种用form-import语句实现部分或者全部导入
# from sys import path #直接导入path方法
# from sys import path as getpath #直接导入path方法 并重命名
# from sys import * #直接导入所有
# print(path) #安装包的方法 pip install
python基础笔记之面向对象的更多相关文章
- Python基础笔记系列十一:标准输入输出、文件读写和指针等操作
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...
- Python基础笔记系列一:基本工具与表达式
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...
- 我的Python基础笔记
Python是从刚开始参加工作,就有听各方面的测试大牛推崇,但是刚开始做测试时还是把基础的测试方法放在第一位来学习的,直到半年多以后才开始接触Python. 我的Python基础主要是以廖雪峰老师的在 ...
- Python基础笔记1
这篇笔记来自廖雪峰的Python教程. 一.Python基础 Python使用缩进来组织代码块,务必遵守约定俗成的习惯,坚持使用4个空格的缩进. 在文本编辑器中,需要设置把Tab自动转换为4个空格,确 ...
- python基础笔记-0
python中数据结构,主要有列表.元组.字典.集合. python中最基本数据结构是序列(sequence).序列中每个元素被分配一个序号——即元素位置,也成为索引.第一个索引是0,第二个是1,以此 ...
- python学习笔记六 面向对象相关下(基础篇)
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...
- python基础整理4——面向对象装饰器惰性器及高级模块
面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...
- Python基础笔记系列十四:python无缝调用c程序
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python语言可以对c程序代码进行调用,以弥补python语言低性能的缺 ...
- Python基础笔记系列十三:socket网络编程
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!!使用python编写一个简易的服务端程序和客户端程序,启动服务端和客户端(监 ...
随机推荐
- CentOS7中实用的命令总结
一:软件安装配置方面 这里总结一下对个人很实用的功能 1.查询rpm包的依赖哪些文件:rpm -qpR xx.rpm,然后rpm会分析此包的文件依赖性 2.查询系统中安装了哪些rpm包:rpm -qa ...
- Spring 、 CXF 整合 swagger 【试炼】
官网:http://swagger.io/ http://swagger.io/specification/ 上面就是描述了什么是 SWAGGER OBJECT 2. 如何用jax-rs 注解方式产生 ...
- Go并发编程基础(译)
2015-05-20 三 By youngsterxyf 原文:Fundamentals of concurrent programming 译者:youngsterxyf 本文是一篇并发编程方面的入 ...
- HDU 3455 Leap Frog 2016-09-12 16:34 43人阅读 评论(0) 收藏
Leap Frog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 西邮Linux兴趣小组2014级免试挑战题
原文链接:西邮Linux兴趣小组2014级免试挑战题 又到了小组纳新的季节^_^,时间过的真快! 想起去年这会儿自己做免试题的时候根本找不着北@_@ 有幸今年能够在这里和大家分享免试挑战题,也正如我 ...
- <context:component-scan>自动扫描
主要讲解自动扫描的<context:component-scan>中的2个子标签的使用方法 在Spring MVC中的配置中一般会遇到这两个标签,作为<context:compone ...
- 关于java的volatile关键字与线程栈的内容以及单例的DCL
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值.volatile很容易被误用,用来进行原子性操作. package com.guangshan.test; pub ...
- Android-Java-进程与线程
1.进程:什么是进程: Mac操作系统,Windows操作系统 ...... 等等,都是由多个进程来运行(系统进程,普通进程,等) 操作系统最小的控制单元是进程,一个应用就是一个进程 进程 全称为:操 ...
- 利用Kettle进行SQLServer与Oracle之间的数据迁移实践
Kettle简介 Kettle(网地址为http://kettle.pentaho.org/)是一款国外开源的ETL工具,纯java编写,可以在Windows.Linux.Unix上运行,数据抽取高效 ...
- asp.net mvc5 分析器错误消息: 未能加载类型“XXX.MvcApplication”
描述 今天忽然碰到一个这个错误: “/”应用程序中的服务器错误. 分析器错误 说明: 在分析向此请求提供服务所需资源时出错.请检查下列特定分析错误详细信息并适当地修改源文件. 分析器错误消息: 未能加 ...