Python学习之面向对象

发布于:2022-12-25 ⋅ 阅读:(516) ⋅ 点赞:(0)

一.面向过程(POP)&面向对象(OOP)

理解面向过程,强调过程过程!以解决问题的过程为中心的编程方法。说到过程,我们联想到步骤,也就是说面向过程的编程注重对每一个步骤的处理,想到哪写到哪。当解决一个问题时,一步一步来,面面俱到,将代码分解为若干个过程或者函数。在我刚刚接触编程时学的C语言就是面向过程的。

对于面向对象,在编程时是有预谋的,有规划的。解决问题时,以功能来划分问题,把构成问题的事务分解成各个对象,对象一般由属性和方法构成。类就是用来描述具有相同的属性和方法的对象的集合。类定义了该集合中每个对象所共有的属性和方法,对象是类的实例。面向对象有封装,继承,多态性的特性。

对于上一篇求1~500的和,也可以用面向对象来解决。

c99e4f9eb489465f8fb60393106538cf.png

class CalculateSum:
    def total(self):
#self 实例对象
        self=int(input())
        odd_even=self%2
        if odd_even==0:
            s=(1+self)*(self//2)
        else:
            s=(1+self)*(self//2)+(1+self)/2
        return s

number=CalculateSum()
#实例化 number为创建的CalculateSum类的对象
print(number.total())
#调用CalculateSum类中的方法total

二. self用法

self代表类的实例,而不是类。类的方法与普通的函数只有一个区别——它们必须有一个额外的第一个参数名称,按照惯例它的名称是self。self在定义类的方法时是必须有的,但是在调用时不必传入相应的参数。

在类中函数相互调用要加self,变为self.,self就是把class中定义的变量和函数变成实例变量和实例函数,作为类class的成员,使成员之间可以相互调用,不需从外部调用变量和函数。

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
#self.__class__指向类

t=Test()
t.prt()

c095e6221ce4417c9a6b34d01c936950.png

 三. init函数的用法

__init__()方法是一种特殊的方法,叫做类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。init用来初始化对象的特征,init这种构建方法,在创建对象时会自动调用,不需要单独调用该方法。

例:

class testClass:
    def __init__(self,name):
        self.name=name
        print('name:',self.name)

n=testClass('gwq')

运行结果:

fbfd66d8198f4a9b96efbfde2ea7a56e.png

 当没有init时:

 

 想要输出: 

class testClass:
    def test(self,name):
        self.name=name
        print('name:',self.name)

n=testClass()
#定义对象
n.name='gwq'
#传参
n.test('gwq')
#调用

 运行结果:

fa21b4354d2e4b25b272adf9cc002c22.png

用了init就需要在定义对象的时候就赋值,而不用init的话,是不需要再定义对象的时候就赋值,需要单独传参,但是因为在test中定义了name,所以在调用的时候,也需要传一个参数,但如果不用init,在调用的时候传参,是没有任何意义的,因为类中的方法默认接受的参数是单独定义的参数,而不是是调用的时候传的参。

__init__是构造方法,在创建对象时会自动调用,而且构造方法(函数),不支持重载,如果需要给这个类定义参数,就需要用init,反则不需要用!

四. 成员函数的调用

类的属性调用前面加self.属性名就可以,self在类中就是testClass(),为了简洁,出现了self代替,当类中有两个函数时,下一个函数要调用上一个函数,只要在前面加一个self(实例)就可以实现调用。def创建方法时,第一个参数位置一定留给self,但在调用时忽略self(不用给self传参)。当在类的方法内部想调用类属性或其他方法时就要采用self.属性名或self.方法名的格式。

例:

class testClass:
    def test(self):
        print('gwq')
    def introduce(self):
        print('My name is ')
        self.test()
#调用类中函数

n=testClass()
n.introduce()

运行结果:


网站公告

今日签到

点亮在社区的每一天
去签到