python3中对 面向对象 的一些理解(基础)

面向对象出来一个新概念 类也就是class 乍看上去像一个函数 。其实我就可以这么理解 这是一个大函数,里面定义的各种函数其实就是小函数

那么问题来了,为什么好好的函数不用 非要定义一个类?其实很简单 ,在面对一个大工程的时候。一些数据是通用的,我们把这些通用的归为一类则就形成了

class。顾名思义 类就是把所有相同属性的整合一起,俗话说 物以类聚,人以群分嘛

         说了这么多 其实并没有切题。这里自己用自己的话剖析以下。

我们把类看成一个服装加工厂(就叫他服装加工类吧)。class(object):

那么有了加工厂 我们需要对外卖衣服吧。可能冬天我只卖羽绒服 但是夏天衣服这么暴力,我不光卖上衣 还卖裤子,鞋子。那么怎么表示我卖的东西呢

__init__(self,xiezi,kuzi,shangyi):函数应运而生。大家可能看程序的时候会注意到不同程序init里面的变量有时候是一个有时候是几个 ,这个是怎么回事呢。

其实定义一个类主要看你解决什么问题。我们把你解决什么问题比作季节 变量多的问题就是夏天 变量少的就是冬天。你比如最后输入为

list_info = Listinfo([44,222,111,333,454,'sss','333'])

输入只有一个变量 就是一个列表,我们就定义 一个变量 相当与是冬天服装厂加工衣服

zm =Student('zhangming',20,[69,88,100])  

这里变量有字符串 整形和列表 我们就定义了三个变量 相当与夏天卖衣服

说这么多你这个init什么用 难道只是定义变量的?

其实不然,init函数最大的作用就是把外面的参数传进来 然后贴上自己的标签 就像这个服装加工厂一样 我造的所有衣服 都印有我厂的标签。

用之前学过的知识来说 在class范围内 定义全球变量 如下self.name=name这么已说明 外部变量就传入内部来了

def__init__(self,name,age,score):
        self.name=name    #name,age,score这三个外部变量,通过self.name这样的变换,相当与把外部变量传入了class内部。
        self.age=age      #self.name则可以在内部调用了。调用name这变量了 。相当与函数的局部变量变成全局变量。
        self.score=score

 有了这些变量 我们就可以对class的其他函数进行传入参数处理



有了这些准备 ,我们就还差一个地方就可以明白了。那就是各个不同的车间(函数)里面又有参数是怎么一回事呢?

def del_key(self,numm):
        self.numm=numm
        del self.num[self.numm]
        return self.num


如上程序 又多出来一个numm 这又是咋回事呢  和init定义的参数又有什么联系呢?

其实我们学过函数都知道函数需要定义变量,这里也是一样 这里想要处理函数必须引入一个变量。

虽然我们知道了,但是这个变量和init定义的变量有什么区别和联系呢

联系肯定有的 就像我们造衣服的工具 生产夏天上衣的机器和生产冬天的机器肯定不一样 这里的机器就可以比作两个函数的变量

不同  init相当与把外部变量传入class中 相当与全局变量  函数中变量就是以前的函数变量一样 用来出来具体问题引出来的 引用的话

可以用self.value

废话说了这么多 看两个个具体的程序




class Student(object):
    def __init__(self,name,age,score):
        self.name=name    #name,age,score这三个外部变量,通过self.name这样的变换,相当与把外部变量传入了class内部。
        self.age=age      #self.name则可以在内部调用了。调用name这变量了 。相当与函数的局部变量变成全局变量。
        self.score=score
        
    def get_name(self):
        return self.name  #这里返回self.name 相当与返回name一样 之所以不直接写name是因为,在这个类的
                           # 全局变量为self.name  name只是通过class传入的。
    def get_age(self):
        return self.age
    
    def get_score(self): #直接把score看成下面的列表操作就可以了,什么类型的就是什么类型操作
        
        return max(self.score)
zm = Student('zhangming',20,[69,88,100])   #把Student实例化 
print(zm.get_score(),zm.get_name(),zm.get_age())  #通过class.method()方法进行操作














class Listinfo(object):
    def __init__(self,num):
        self.num=num
        
    def add_key(self,keyname):
        self.keyname=keyname
        if isinstance(self.keyname,int) or isinstance(self.keyname,str):
            self.num.append(self.keyname)
            return self.num
    def get_key(self,num_1):
        self.num_1=num_1
        if isinstance (self.num_1,int):
            return self.num[num_1]
    def update_list(self,list_1):  #不能定义python的默认参数list
        self.list_1=list_1
        if type(self.list_1)==list:
            return self.num+self.list_1
        else:
            return("请输入列表类型")
    def del_key(self,numm):
        self.numm=numm
        del self.num[self.numm]
        return self.num
        
    
        
list_info = Listinfo([44,222,111,333,454,'sss','333'])




print(list_info.add_key('sdf'))
print(list_info.get_key(3))
print(list_info.update_list([3,57]))
print(list_info.del_key(3))

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值