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. nuxt.js axios使用poxyTable代理,解决跨域问题

    1 安装(@gauseen/nuxt-proxy) cnpm install @gauseen/nuxt-proxy --save 2 配置nuxt.config.js modules: [ // 请 ...

  2. cryto-js 常用加密库 md5加密

    安装 npm i crypto-js 使用 import CryptoJs from 'crypto-js' CryptoJs.MD5(password).toString() password 会被 ...

  3. PHP入门培训教程 PHP 数据类型

    PHP 支持八种原始类型(type),下面兄弟连PHP培训 小编来给大家列出:. 四种标量类型: string(字符串) integer(整型) float(浮点型,也作 double ) boole ...

  4. activeMQ安全机制

  5. [CSP-S模拟测试]:毛二琛(DP)

    题目描述 $MYC$在$NOI2018$中,遇到了$day1T2$这样一个题,题目是让你求有多少“好”的排列.$MYC$此题没有获得高分,感到非常惭愧,于是回去专心研究排列了.如今数排列的题对$MYC ...

  6. [HDU6403]:Card Game(dfs+DP+基环树)

    题目传送门 题目描述 她依然在我不知道的地方做我不知道的事.桌面上摊开着一些卡牌,这是她平时很爱玩的一个游戏.如今卡牌还在,她却不在我身边.不知不觉,我翻开了卡牌,回忆起了当时一起玩卡牌的那段时间.每 ...

  7. 十二、python字符串方法汇总

    '''1. index():检测字符串str1中是否包含字符串str2 语法:str1.index(str2,beg,end) str:指定检索的字符串:beg开始的索引,默认为0:end结束的索引, ...

  8. 2013 AAAI: Uncorrelated Lasso

    Si-Bao Chen, Chris Ding, Bin Luo and Ying Xie. Uncorrelated Lasso. AAAI, 2013. 第一作者是安徽大学陈思宝副教授. 第二作者 ...

  9. 监听整个页面上的DOM树变化

    在线预览 方法 使用<Web API 接口>的<MutationObserver> MutationObserver 网上查到的很多都是使用Mutation events的,但 ...

  10. Robot Framework安装部署详细教程

    (转自“义甬君”) Robot Framework安装准备 说实话,在我玩了这么多自动化工具后,感觉Robot Framework所需的环境和安装过程是相对比较繁琐和复杂的.要真正搭建一套可以使用的R ...