python面向对象的特征是什么,python中面向对象的概念
面向对象编程。基础理论(1)什么是对象(Process orientation)和面向对象(object orientation)两者的比较4)层次2,Python中的实践1。创建一个类2。打印类和类属性的快捷方式3。对象和类之间的引用关系。对象属性5。Python 6中的引用。对象的_ _ dict _ _ object 11类型类17。写评论18。创建文档19。下划线20。@property——只读属性21。_ _ _ setattr _()方法21
1.基础理论的对象是什么(1)?
在python中,一切都是对象。包括int等基本类型,都是对象。对象有属性和方法。属性是通过解释这个对象能做什么来解释这是什么。前者是静态特征,后者是动态特征。
)重点介绍面向过程和面向对象的面向过程的问题解决步骤。
面向对象侧重于哪个对象可以解决这个问题;
如果你现在需要完成“洗碗”的操作,面向对象的思想就是找到完成这个任务的对象,让他去做。
也就是说面向对象是分配任务。给各种人分配一个任务,自己只做安排好的事情。(“盲目指挥”角色、承包商等。
)3)两者的比较。面向对象是面向过程的封装。解决问题的基本步骤仍然是面向过程的思想。
所以,对于面向过程的编程来说,最重要的是“分解步骤”,即将一项任务分解成具体的小步骤。
另一方面,对于面向对象编程来说,最重要的是“按功能对象划分”,它决定了对象的功能、属性和方法。
如何转变成面向对象的编程思想?
最重要的一步是分离功能模块。把几个功能归为一个对象,根据对象的动作抽象出类(设计类)。
)类中的特征是抽象表示,而对象的特征是实例化的抽象特征。比如“年龄”是概念的抽象符号,“22岁”是具体特征。
类是将一系列具有相似特征的事物抽象成一组特征。类的设计过程就是分类的过程!
二。在Python 1中练习。创建一个类。这是一个不继承类的类。
A类:pass位于以下代码中:
2.打印类和类属性的快捷键是a.pritab。
两个名为class a的打印功能:passa=a(打印)a(打印)a)打印)a)由快捷键触发。输出如下。
您也可以使用这个方法来列印类别的属性。(也就是先用。)
打印id(对象)也可以用这个快捷键!什么都应该没问题!
可以打印的对象类别:
a._ _ class _ _ u
3.对象和类之间的引用关系。类也是对象,存储在内存块中。该引用是类名,并且有一个地址。下面的代码输出相同的类地址。
类Money:passone=Money()print(id)one。__class_ ) ) print (id ) money))
类和对象之间的引用关系如下:
4.对象的属性可以动态添加。
class money:passone=money()one . age=18 one . height=180 # _ dict _ _非默认属性键值对print) one。_ _字典_ _一
向对象添加属性相当于创建一个对象,然后将该对象的属性指向新创建的对象。例如,在上面的代码中,创建了两个对象18和180,然后对象的属性指向它们。
这就是“Python中的一切都是对象”的写照。在Python中,即使是int也是一个对象。更何况其他内容呢?创建对象后,无论如何找到这个对象就是铜鼓的参考方法。引用的方法正是下一节中描述的方法。
5.参考文献5。Python是每个引用的地址。这意味着每个符号(变量)都和地址一样。在编译链接中,每个符号都被翻译成程序集的地址。在Python中,改变指针的方向等同于改变组件的值(即改变地址)。
原来a=0x99999。
当执行a=Money()时,结果可能是a=0x88888。数据是废话,它只是意味着使用。
6.对象名为__dict__的dict所指向的内容就是object属性所指向的对象:
Class: passobj=c (#只需将键值对添加到_ _ dict _ _ dict _={ age 336012 } print)obj。_对象
但是,您不能以这种方式更改类的字典属性。对象是可能的。
七分钟后。slotsjava,不能随意添加对象属性。用Python就行了。Python可能还需要限制此操作的对象属性的添加。
8.根据方法接受的第一个参数,方法划分分为示例方法和类方法。前者的第一个参数是self,后者是cls。静态方法的第一个参数是
默认情况下,不接受任何内容。
类方法用@classmethod修饰。静态方法用@staticmethod修饰。
9.方法存储位置这个可以用objects的__dict__段链接:对象和类的属性都存储在__dict__中。
方法存在于类对象中:
诸如
class person:def age(self):passp=person()每个方法也是一个对象。
10.实例方法的第一个参数是实例。
诸如
A=Money() a.show(),其中show()方法接受的示例是a。
11.用类调用实例方法。调用实例最常见的方法是调用实例:
类person: def eat (self,food): print (self,food) p=person () p. eat()但是作为方法存储在类对象中,也可以使用类名。用于查找与此方法对应的对象的方法名:
在使用Person类直接访问方法时,这个方法和普通方法没什么区别,需要传递self和food两个参数。此时,self被显式传递给方法。
12.类方法的调用是用@classmethod修饰的。这是这份文件:
Classmethod(object): class method(function)-method将函数转换为class method。#接受类作为默认隐式参数,就像实例方法一样。这里的类比是恰当的。类方法接收类作为隐式第一个参数,就像实例方法接收实例一样。若要声明一个类方法,请使用:class c: @ classmethoddef f (cls,arg1,arg2,):#可以通过类名、方法名或实例方法名调用。不同之处在于,如果用实例调用,则#将忽略此实例。#如果它被一个子类调用,那么传入的类就是这个子类,它既可以在类上被调用(例如c.f()),也可以在实例上被调用(例如c())。f())。该实例被忽略,但其类除外。如果为派生类调用类方法,派生类对象将作为隐含的第一个参数传递。#声明这是一个静态方法类方法不同于c或java静态方法。如果你想思考,看看内置的静态方法。 13.类方法和实例方法l=[1,2,4,3]#有几种方法来排序这个列表#1。使用类方法。然后,您需要传入另一个实例作为self参数。List.sort(l)#2内置方法排序(l)#3。使用实例方法。所以,实例方法是一个作用于对象的方法,这个方法可以在实例上执行任何操作。#数据可能会更改,其他数据可能会根据数据更改。与对象的主动和被动无关。l.sort() 14。静态方法不需要实例或类作为默认参数。
这是文件:
class staticmethod(object): static method(function)-method将函数转换为static method。#也就是说,如果没有任何隐式参数作为第一个参数,静态方法不会接收隐式的第一个参数。声明一个静态方法,用这个成语:class C: @staticmethod def f(arg1,arg2,):它既可以在类上调用(例如C.f()),也可以在实例上调用(例如C()。f())。该实例被忽略,但其类除外。Python中的静态方法类似于Java或C中的静态方法。有关更高级的概念,请参见类方法构建tin。 15.元类的每个实例都是由类创建的,但类也是实例,类也是由类创建的,这叫做类型。
当创建一个类时,可以指定__metaclass__参数来表示这个类的元类是谁。(我不明白,元类和有什么区别)
16.type类type是类,不是方法。
第一个作用是判断一个对象的类,另一个作用是创建一个类:
class type(object): type(object _ or _ name,bases,dict)type(object)-对象的类型#这种方式是创建一个class type(name,bases,dict)-一个新的类型
17.写一个注释,点击直接获取文档的参数:
帮助(人)可以生成文档。
18.使用这个pydoc模块来生成文档。
19.下划线后的下划线不表示访问权限,只是为了区分。例如,class_ variable因为不能与class同名,所以带有下划线。
__init__,这意味着系统是内置的。
单下划线代表“私有”。
20.@property——设置只读属性用于“将属性的操作方法(如添加、删除、检查)与属性关联起来”:
属性attribute转化为属性attribute。
属性是面向对象的基本概念,它为私有字段提供访问封装。在C#中,可读写属性的操作通过get和set访问器实现,提供了安全灵活的数据访问封装。
def __init__(self,fget=None,fset=None,fdel=None,doc=None): #属性的已知特例。__init__ 属性特性。# Fget是获得属性值Fget函数的方法,该函数用于获得属性值fset函数,该函数用于设置要使用的属性值fdel函数。删除一个属性doc DocString #比较典型的用途是定义一个托管属性X: #用来设置属性X的操作方法这个例子非常形象的为class C(object):def getx(self):return self。_x def setx(self,value): self。_x=值def delx(self): del self。_x x=property(getx,setx,delx,我是 x 属性。)#用decorators简化上面的操作让定义新属性或者修改现有属性变得容易:class c(object):@ property def x(self):我是 x 属性。回归自我。_ x @ x.setter def x (self,value): self。_ x=value @ x . deleter def x(self):del self。_ x #(从classdoc复制而来) Pass21。_ _ setattr _
在下面的示例中,重写了Person的__setattr__方法,以便它不在字典中存储对象的属性。因此,根本不添加该属性。
22.常见内置设置的属性
23.对象的默认内置方法函数
词典索引的实现;
24.slice在下面的例子中,key是一个slice类型的对象,它有start等三个属性。
25.上下文布尔值可以指定对象是返回True还是False。
26.可以被next()函数调用的迭代器是一个iterable对象。这是实现__next__()函数的类。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。