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. 【leetcode】All Paths From Source to Target

    题目如下: Given a directed, acyclic graph of N nodes. Find all possible paths from node 0 to node N-1, a ...

  2. iOS 指定位置切圆角不生效问题

    如果是在VC中操作,需要在viewDidLayoutSubviews方法里 - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; ...

  3. Oracle 与 ODAC 一起安装

    Oracle 需要设置path变量支持运行,ODAC安装时会将其路径加入path变量. 导致先搜索到ODAC,连接出现:ora-12560: TNS:protocol adapter error 将p ...

  4. web大文件下载+断点续传

    实现原理(1)首先获得下载文件的长度,然后设置本地文件的长度.(2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置.如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,每条 ...

  5. BZOJ 5129: [Lydsy1712月赛]树上传送 点分树+Dijkstra

    Description http://www.lydsy.com/JudgeOnline/upload/201712/prob12.pdf Input Output 暑假集训的时候点分树做的比较少,所 ...

  6. 洛谷 P2590 BZOJ 1036 [ZJOI2008]树的统计

    Time limit 10000 ms//另外,BZOJ只算所有点的总时限,所以可能会放过一些原本会TLE的代码 Memory limit 165888 kB OS Linux SourceZJOI2 ...

  7. 洛谷P1982 小朋友的数字——题解

    题目传送 简单地说,这题就是让我们求前i个数的最大子串和和最值. 对于最大子串和,我们可以设一个变量qian,表示以当前元素结尾的最大子串的子串和.若搜索完第i-1个小朋友,现在看到第i个小朋友时,若 ...

  8. [POJ1637]Sightseeing tour:混合图欧拉回路

    分析 混合图欧拉回路问题. 一个有向图有欧拉回路当且仅当图连通并且对于每个点,入度\(=\)出度. 入度和出度相等可以联想到(我也不知道是怎么联想到的)网络流除了源汇点均满足入流\(=\)出流.于是可 ...

  9. JavaVM & JNIEnv

    JNIEnv提供了大多数的JNI函数.你的本地方法都会接收JNIEnv作为第一个参数.JNIEnv用于本地线程存储.因此,你不能在线程间共享同一个JNIEnv.如果一个代码段没有其他方式获取它自身线程 ...

  10. How to derive mean and variance of a Gaussian?

    PRML exercise 1.8: To derive mean: change of variable z = x - u, use symmetry To derive variance: di ...