class Foo:
#类中的函数
def bar(self):
#功能阐述
print('Bar')
pass
def hello(self,name):
print('i am %s' %name)
#根据Foo创建对象obj
obj=Foo()
#在创建对象的时候,记得后面加个括号
#注意,按照python的通用规则,Class用驼峰表示(HelloWorld)
#而其他的obj等,都用'_'隔开(this_is_obj)
#类中函数第一个方法必须是self,指代本类的一个东西,类中定义的函数叫做'方法'
obj.bar()
obj.hello('july')
#创建类
class Foo:
#这里我们可以创建一个类级别的变量
#他不会随着由此类创建的变量而变化
name='Jan' def bar(self):
print('Bar')
def hello(self,name):
print('you are %s' %self.name)
print('I am %s' %name)
print('\n')
#根据Foo创建对象
obj1= Foo()
obj2=Foo()
obj1.hello('August')
obj2.hello('July') #这个self就是一个代指,代指了自己所在的class
#也可以使用self点代自己所指的class函数本身
#self本身就是一个代词,并不一定要交self,也可以用其他的词来代替,只不过
#必须是这个类的所有字方法的第一个参数
#创建类
class Foo:
#这里可以创建一个类级别的变量
#他不会随着由此类创建的变量而变化
name='Jan' def bar(july):
print('Bar') def hello(july,name):
#但是只要其作为第一参数的位置没有变,依旧是Foo
#Foo Class的自我指代
print('you are %s'%july.name)
print('I am %s'%name)
print('\n')
#根据Foo创建对象
obj1 = Foo()
obj2 = Foo()
obj1.hello('August')
obj2.hello('July')

一、类和实例

  1.类(Class):用来具有相同属性和方法的对象的集合。它定义了该集合汇总的每个对象共有的属性和方法,对象是类的实例。

  2.类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中,且定义在函数体外。类变量通常不作为实例变量使用。

  3.实例变量:定义在方法中的变量,只作用于当前实例的类

  4.类和对象的使用:

    类就是一个模板,模板里可以包含多个函数,在函数里实现一些功能

    对象则是根据模板创建的实例,通过实例对象可以创建类中的函数

  5.构造函数:构造函数式一种特殊的方法,主要用来在创建对象初始的时候,就完成一些动作

        跟所有的面向对象的语言一样,python也是有构造函数的

  

#创建类
class Foo:
def __init__(self):#这就是构造函数,它的职责就是在模型创建的初期,就完成一些动作
#简单的说,就是自定义一些初始化的步骤
#同样,它也需要self来指代这个class
self.name='Jane'
def hello(self,name):
print('you are %s'%self.name)
print('I am %s'%name)
print('\n')
#当你创建一个Foo类的时候,init会自动跑一圈
obj=Foo()
#在我们的例子中,我们会默认给self自己的name变量,赋值为'JAN'
#此刻,当我们调用Foo的hello()方法的时候,hello自己的name变量,被赋值为'July'
obj.hello('July')
#创建类
class Foo:
def __init__(self,name):#可以在这里附加上一些参数
#这些参数将是你创建一个Foo类的时候的必要条件
self.name=name
def hello(self,name):
print('you are %s'%self.name)
print('I am %s'%name)
print('\n')
#完毕
#当你还在创建一个Foo类的时候,init()就会自动跑一遍
#此刻,你可以直接跑Foo(),需要填入一个参数:name2
obj=Foo('Feb')
#然后再调用hello,并复制July
obj.hello('July')#这个地方首先打印出:you are Feb;后面打印出'I am july'
#为了防止这种篡改年龄的事情的发生,为了维护世界的和平,需要把关键信息做好隐藏
class Student:
def __init__(self,name,age):
self.name=name
self.age=age
def detail(self):
print(self.name)
print(self.age)
Lilei=Student('LiLei',)
Lilei.age=
Lilei.detail() #LiLei #

以下这种方式实现了信息隐藏

二、访问限制

三、继承和多态以及多重继承

  1.在python中展现面向对象的3大特性:

    面向对象的3大特性是:封装、继承和多态

  2.封装是指将内容封装到某个地方,用于日后的调用

    他需要:

      把内容封装在某处

      从移除调用被封装的内容

class Student:
#假定我们初始化一个Student类的时候做的就是,记录下每个学生的名字和年龄
def __init__(self,name,age):
self.name=name
self.age=age
#至此,我们用self指代student本身,并用name和age存下了他们的年龄和名字 #此时,我们创建一个学生
obj1=Student('July',)
print(obj1.name)#直接调用obj1对象的name属性
print(obj1.age)#直接调用obj1对象的age属性 obj2= Student('Aug',)
print(obj2.name)
print(obj2.age)
class D:
def bar(self):
print('D.bar')
class C(D):
def bar(self):
print('C.bar')
class B(D):
pass class A(B,C):
pass
a=A()
#在执行bar方法的时候,首先在A类中进行查找,如果A类中没有,则继续去B类中寻找
#如果B中没有,则继续去D中去寻找,如果D类中没有,则继续去C类中进行寻找,如果还是没有找到就会报错
#所以查找顺序为:A-->B--->D-->C
#在上述的查找过程中,一旦找到,寻找过程就会立即中断,不会再继续查找了
#python是一种弱类型的语言,只要不报错,什么东西都可以放进来
a.bar()

四、获取对象信息

1.当我们拿到一个对象的引用时候,如何知道这个对象是什么;类型,有哪些方法的呢?

type()
int 类型 type('str')
str类型 type(abs)#abs是取绝对值的一个方法
#builtin function or method#内置的方法或者函数 class a:
  def __init__(self):
    pass
type(a) 如何用语句判断是不是一种type呢?
type(123)=type(456)
#True type('abc')==type('123')
#True type('abc')==type(123)
False 用instance()
instance()告诉我们一种对象是不是某一种类型(包括继承关系)
class A:
  pass
class B(A):
  pass
class C(B)
  pass
K=A()
g=B()
y=C() isinstance(y,C)
class A:
pass
class B(A):
pass
class C(B):
pass
k=A()
g=B()
y=C() print(isinstance(y,C))#True
print(isinstance(y,B))#True
print(isinstance(y,A))#True

  2.使用dir()

  如果要获得一个对象的属性和方法,那就使用dir()函数,返回一个包含字符串的list

  比如,获得一个str对象的所有的属性和方法

print(dir('ABC'))

#['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

五、实例属性和类属性

  由于python是动态语言,根据创建的实例可以任意绑定属性

  给实例绑定属性的方法是通过实例变量,或者通过self变量

六、模块和包

  python的程序由包(package)、模块(module)和函数组成。包是由一系列模块组成的集合。模块是处理某一类问题的函数和类的集合

  包就是一个完成特定任务的工具箱,python提供了很多有用的工具包。如字符串处理,图形用户接口、web应用、图形图像处理等。这些自带的工具包和模块安装在Python的安装目录下的lib子目录中。

  注意:至少包含一个__init__.py文件,该文件的内容可以为空。__int__.py用于表示当前文件夹是空的。

  模块

  在Python中一个文件可以被看成一个独立的模块,而包对应着文件夹,模块把python代码分成一些有组织的代码段,通过导入的方式实现代码的重用。

  导入模块的时候,是按照sys.path变量的搜索模块,sys.path的值是包含每一个独立路径的列表,包含当前目录、python目录、python环境变量、搜索顺序按照路径在列表中的顺序

  想想看自己的python路径,可以

  import sys

  print(sys.path)

如果你发现你在某个地方写的文件(包)import错误,你就可以看看这个sys.path是否囊括了你那批文件的根目录

  导入模块

  使用import语句(不管是别人写的,还是你下载别人的)

  import module1

  import module2

  impotr module3

  import module1,module2,module3

一般在文件首部导入所有的模块

  python标准库

  第三方库

  应用程序自定义模块

使用from-import语句导入模块

单行导入

  from module import name1,name2,name3

多行导入

  from module import name1,name2,name3

导入全部属性

  包

  包将所哟联系的模块组织在一起,有效避免模块名的冲突问题,让应用组织结构更加的清晰。

python学习笔记(7): 面向对象的更多相关文章

  1. python 学习笔记7 面向对象编程

    一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." ...

  2. python学习笔记六 面向对象相关下(基础篇)

    面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...

  3. python学习笔记_week6_面向对象

    面向对象 介绍(特性(class.object--->封装.继承,多态)).--->世界万物,皆可分类:世界万物,皆可对象 只要是对象,就肯定属于某种品类:只要是对象,就肯定有属性 你是上 ...

  4. Python学习笔记016——面向对象

    面向对象是指用类来描述一个对象(实例),用类来建立实例与实例的关联关系 对象 : object     实例 : instance 1 类 1.1 什么是类 类是用来描述对象的工具,用类可以创建一个或 ...

  5. python学习笔记(七):面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  6. python学习笔记(6)--面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.   引言 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做(人狗大战)的游戏,你就思 ...

  7. python学习笔记(10):面向对象

    一.类和实例 1.类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 2.对象:通过类定义的数据结构实例.对象包括两个数据成员( ...

  8. Python学习笔记之面向对象

    下面是初步总结的Python的面向对象的参数定义,后面会逐渐完善面向对象的相关知识.

  9. Python学习笔记捌——面向对象高级编程

    __slots__特殊变量的使用: 由于Python是动态语言,允许先编写类,然后在创建实例的时候添加属性或者方法:而__slots__特殊变量就是,限制往类里添加属性的: 在创建类的时候,使用__s ...

随机推荐

  1. HTML中的表单<form>标签

    一.HTML表单 HTML 表单用于搜集不同类型的用户输入. HTML 表单包含表单元素,表单元素指的是不同类型的 input 元素.复选框.单选按钮.提交按钮等等. 关于表单的更多内容可以参考htt ...

  2. Spring——IOC与Bean容器

    [IOC] (1)IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护.也就是说由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中 (2)DI: ...

  3. 一本通【例题4】Addition Chains——题解

    又是一道剪枝剪了半天的搜索题...题目传送 要充分利用题目中的约束条件:1.:2.对于每个k(1≤k≤m)k(1≤k≤m)满足ak=ai+aj(0≤i,j≤k−1)ak=ai+aj(0≤i,j≤k−1 ...

  4. Model 层

    package com.test.mvp.mvpdemo.mvp.v1.model; import com.test.mvp.mvpdemo.mvp.v1.MainContract; import o ...

  5. leetcode 39. 组合总和(python)

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限制重复被选 ...

  6. Delphi XE2 之 FireMonkey 入门(21) - 和 FMX 相关的类(表)

    TObject TPersistent TComponent IInterface,IInterfaceComponentReference         TBasicAction TControl ...

  7. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_06 Set集合_7_可变参数

    打印出来是一个数组的地址 打印数组的长度 只要调用了add方法就会创建一各长度为0的数组 传一个10过去.就输出了数组的长度为1 传两个数字 注意事项: 特殊写法

  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_6_File类判断功能的方法

    exists true表示路径是存在的 不存在的路径 不存在的路径返回false 相对路径的文件的判断 ‘ 不存在的相对路径 isDirectory和isFile 路径是不存在的 用这个方法之前最好先 ...

  9. sorted()与sort()函数

    1 sorted可以对series,ndarry,list类型进行排序 默认会从小到大进行排序 arr1 = np.array([1,2,3,4,44,3243,43,8678]) print(sor ...

  10. Jmeter之Switch Controller

    在测试过程中,各种不同的情况需要执行不同的操作,这个时候用if控制器比较麻烦,此时就可以使用Switch Controller代替. 一.界面显示 二.配置说明 1.名称:标识 2.注释:备注 3.S ...