python面对对象是什么_Python3---面对对象
前言
该文章主要描述了对象的定义,使用
2020-01-02-09:58:27
天象独行
0X01;什么是类?
类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
1 '''
2 类定义:关键字“class”标识类定义,“ClassName”标识类名称。3 '''
4 classClassName:5
6 .7 .8
0X02;什么是对象?
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
方法:类中定义的函数。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
1 classMyclass:2 '''定义类'''
3 i = 1234567
4 def f(self): #定义一个类方法
5 return 'hello world'
6
7 #实例化类
8 x =Myclass()9 #访问类的属性和方法
10 print("Myclass类的属性i为:",x.i)11 print("Myclass类的方法f为:",x.f())
1 '''运行结果:'''
2 C:\Users\aaron\Desktop\Pytoon-cade\venv\Scripts\python.exe C:/Users/aaron/Desktop/Pytoon-cade/urllib-Study.py3 Myclass类的属性i为: 1234567
4 Myclass类的方法f为: hello world5
6 Process finished with exit code 0
0X03;什么是继承?
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
语法格式:
1 classDerivedClassName(BaseClassName):2
3 .4 .5
6 '''
7 注意:BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。8 '''
举例单继承:
1 #!Python3
2
3 #定义一个类
4 classmycalss:5 name = ''
6 age =07 __weight =08 def __init__(self,n,a,w):9 self.name =n10 self.age =a11 self.__weight =w12 defspeak(self):13 print("%s 说:我 %d 岁。"%(self.name,self.age))14
15 #继承类
16 classstudent(mycalss):17 grade = ''
18 def __init__(self,n,a,w,g):19 #调用父类的函数
20 mycalss.__init__(self,n,a,w)21 self.grade =g22 #覆写父类的方法
23 defspeak(self):24 print("%s 说:我%d岁了,我现在在读%d年级"%(self.name,self.age,self.grade))25
26 s = student('Peter',10,6,3)27 s.speak()
1 '''运行结果:'''
2 C:\Users\aaron\Desktop\Pytoon-cade\venv\Scripts\python.exe C:/Users/aaron/Desktop/Pytoon-cade/urllib-Study.py3 Peter 说:我10岁了,我现在在读3年级4
5 Process finished with exit code 0
举例多继承:
注意:需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
1 #!Python3
2
3 #定义第一个类
4 classmycalss:5 name = ''
6 age =07 __weight =08 def __init__(self,n,a,w):9 self.name =n10 self.age =a11 self.__weight =w12 defspeak(self):13 print("%s 说:我 %d 岁。"%(self.name,self.age))14
15 #定义第二个类
16 classspeaker:17 topic = ''
18 name = ''
19 def __init__(self,n,t):20 self.name =n21 self.topic =t22 defspeak(self):23 print("我叫 %s ,我是一个演说家,现在我的演讲主题是%s"%(self.name,self.topic))24
25 #多重继承
26 classsample(speaker,mycalss):27 a = ''
28 def __init__(self,n,a,w,g,t):29 mycalss.__init__(self,n,a,w)30 speaker.__init__(self,n,t)31
32 test = sample('Tim',25,3,4,'Python')33 test.speak() #方法名同,默认调用的是在括号中排前地父类的方法
1 #运行结果:
2 C:\Users\aaron\Desktop\Pytoon-cade\venv\Scripts\python.exe C:/Users/aaron/Desktop/Pytoon-cade/urllib-Study.py3 我叫 Tim ,我是一个演说家,现在我的演讲主题是Python4
5 Process finished with exit code 0
0X04;什么是方法重写?
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
1 #! Python3
2 class Parent: #父类
3 defmyMethod(self):4 print('调用父类方法')5
6 class child(Parent): #子类
7 defmyMethod(self):8 print("调用子类方法")9
10 C =child()11 C.myMethod() #子类调用重写后的方法
12 super(child,C).myMethod() #调用父类的方法
1 #运行结果:
2 C:\Users\aaron\Desktop\Pytoon-cade\venv\Scripts\python.exe C:/Users/aaron/Desktop/Pytoon-cade/urllib-Study.py3 调用子类方法4 调用父类方法5
6 Process finished with exit code 0
0X05;什么是类的私有方法?
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。
1 #!Python3
2
3 classa:4 __s = 0 #私有变量
5 b = 0 #公开变量
6
7 defcount(self):8 self.__s += 1
9 self.b += 1
10 print(self.__s)11
12 count =a()13 count.count()14 print(count.b)15 print(count.__s) #报错,实例不能访问私有变量
1 #运行结果
2 C:\Users\aaron\Desktop\Pytoon-cade\venv\Scripts\python.exe C:/Users/aaron/Desktop/Pytoon-cade/urllib-Study.py3 1
4 1
5 Traceback (most recent call last):6 File "C:/Users/aaron/Desktop/Pytoon-cade/urllib-Study.py", line 15, in
7 print(count.__s) #报错,实例不能访问私有变量
8 AttributeError: 'a' object has no attribute '__s'
9
10 Process finished with exit code 1
类的专有方法:
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
0X0N;常见使用方法举例:
A;类的方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。
1 #! Python3.8
2
3 #定义一个类
4 classpeople:5 #定义基本属性
6 name = ''
7 age =08 #定义私有属性,私有属性在类外部无法直接访问
9 __weight =010 #定义构造方法
11 def __init__(self,n,a,w):12 self.name =n13 self.age =a14 self.__weight =w15 defspeak(self):16 print("%s说:我%d岁。"%(self.name,self.age))17
18 #实例化类
19 p = people('aaron',10,30)20 p.speak()
1 #运行结果:
2
3 C:\Users\aaron\Desktop\Pytoon-cade\venv\Scripts\python.exe C:/Users/aaron/Desktop/Pytoon-cade/urllib-Study.py4 aaron说:我10岁。5
6 Process finished with exit code 0
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)