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】390. Elimination Game

    题目如下: 解题思路:对于这种数字类型的题目,数字一般都会有内在的规律.不管怎么操作了多少次,本题的数组一直是一个等差数列.从[1 2 3 4 5 6 7 8 9] -> [2 4 6 8] - ...

  2. 【leetcode】74. Search a 2D Matrix & 240. Search a 2D Matrix II

    题目如下:这两个题目可以用同样的代码来解答,因此就合并在一起了. 题目一: 题目二: 解题思路:两个题目的唯一区别在于第二个题目下一行的最小值不一定会小于前一行的最大值.但是不管怎么样我们可以确定的是 ...

  3. Git整理[1] git cherry-pick的使用

    简单地说 git cherry-pick为”挑拣”提交 ,挑取某次提交合并到其他分支上,而不用合并整个分支. 参数: git cherry-pick [<options>] <com ...

  4. 尝试用了一哈wepy框架的感想

    恶心死我, 1 在项目里出现了中文乱码(utf-8在wpy文件里有中文和注释--编译后就转化成乱码, 把代码拷在另外的项目里,(该项目没有中文乱码现象,)编译出来就出现中文乱码, 然后我再在所拷的代码 ...

  5. 2,Executor线程池

    一,Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.co ...

  6. maven打包的时候you are running on a JRE rather than a JDK?

    解决方案.删除掉,然后重新添加. 然后remove掉 然后Add  Library

  7. CodeForces 1197D Yet Another Subarray Problem

    Time limit 2000 ms Memory limit 262144 kB Source Educational Codeforces Round 69 (Rated for Div. 2) ...

  8. JSP异常处理

    JSP异常处理 当编写JSP程序的时候,程序员可能会遗漏一些BUG,这些BUG可能会出现在程序的任何地方.JSP代码中通常有以下几类异常: 检查型异常:检查型异常就是一个典型的用户错误或者一个程序员无 ...

  9. Educational Codeforces Round 16 E. Generate a String (DP)

    Generate a String 题目链接: http://codeforces.com/contest/710/problem/E Description zscoder wants to gen ...

  10. leetcode-mid-array-5. Longest Palindromic Substring

    mycode   12.51% class Solution(object): def longestPalindrome(self, s): """ :type s: ...