前言

该文章主要描述了对象的定义,使用

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐