专栏首页Python研发面向对象 "一"

面向对象 "一"

1:面向对象不是所有情况都适用。

2面向对象编程

a:定义类

calss Foo:                    注意顶一个类的时候首字母必须是大写

       def (方法一)(self,bb)

               pass

b:根据创建对象,创建和Foo实列的。

使用对象去类中找方法。

3:self,是一个形式参数,python内部传递的。

4:类+括号就会自动执行类中的__init__方法:创建了一个对象在__init__方法中执行具体的封装操作。

__init__:有一个特殊的名字:构造方法

__del__:解释器销毁对象的时候会自动调用,特殊的名字:析构方法
封装:

使用场景:当同一类型的方法具有相同的参数时,直接封装到对象即可。

使用场景:把类当做模板,创建多个对象(对象内封装的数据可以不一样)

5:派生类可以继承基类中的所有功能。

6:派生类和基类同时存在,优先找派生类。

面向对象有三个特性:

                          封装 , 继承 , 多态。
面向对象编程,类,def函数。          参考:
class Oldboy:           定义类
    def fetch(self,backend):         
        print(backend) 
    def add_record(self,backend,record):
        pass
#创建对象
ret = Oldboy()
  

ret.fetch("www.xxx.com") ret.add_record("www.xxx.com","www.ooo.com") #这个不执行 #输出结果 www.xxx.com



class OldBoy:
    def __init__(self,bk):      #bk是形参,对应外部穿过来的实参
        '''
        构造方法
        :return: bk
        '''
        self.backend = bk       #self.backend = bk相当于在__init__中bk的参数

    def fetch(self):
        print('fetch中self的内存地址:',self)
        return self.backend     #backend用来接收init方法中bk的参数

    def add_record(self,record):
        print('add_record中self的内存地址:',self)
        return self.backend + record

obj = OldBoy("www.oldboy.org")      #创建了一个对象obj,然后把www.oldboy.org封装到类中对应的形参bk
# obj.backend = "www.oldboy.org"
print('obj对象的内存地址:',obj)
ret = obj.fetch()
print(ret)

obj2 = OldBoy(2)
# obj2.backend = 2
print('obj2对象的内存地址:',obj2)
ret = obj2.add_record(3)
print(ret)
class Abcd:          #父类
    def chi(self):
        print(self,name +"吃" )
    def he(self):
        print(self,name + "喝")
class Dog(Abcd):          #继承父类
    def __init__(self,name):
        sela.name = name
    def jiao(self):
        print(self.name + "汪")
ret = Dog("小黑")
ret.chi()
ret.he()
ret.jiao()

#执行结果
小黑 吃
小黑 喝
小黑 汪
#多个继承
class Abcd(object):
    def f1(self):
        print("Abcd")
class A(Abcd):
    def f(self):
        print("A")
class B(Abcd):
    def f1(self):
        print("B")
class C(A):
    def f(self):
        print("C")
class D(B):
    def f1(self):
        print("D")
class E(C,D):
    def f(self):
        print("E")
ret = E()
ret.f1()


#执行结果
D

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 吴恩达深度学习笔记 2.10~2.18 向量化与python

    对于非向量化,我们要求得z的值,必须用到for循环,但是当数据量非常庞大的时候,for循环所用的时间会比较多,这个时候可以使用向量运算来提高速度

    Dar_Alpha
  • 牛客网 python (1)

    1. python my.py v1 v2 命令运行脚本,通过 from sys import argv如何获得v2的参数值? 

  • Python读取大文件的"坑“与内存占用检测

    随手搜索python读写文件的教程,很经常看到read()与readlines()这对函数。所以我们会常常看到如下代码:

    HappenLee
  • 精选11条知乎干货回答,保证让你看到就是赚到

    为了方便读者朋友,决定把我在知乎上一些的个人觉得干货比较多,比较受欢迎的回答整合起来,方便大家查阅!

    谭庆波
  • 2. Jetson TX2--python3下编译安装opencv3.4

    jetpack3.2自带了opencv3.3,但是只提供了python2.7的编译版本,所以也只能在python2.7下使用,我本来以为有什么更简单的方法链接到...

    和蔼的zhxing
  • My First Blog

    技术小黑屋
  • 吴恩达深度学习 course4 卷积神经网络

    传统的神经网络所存在的问题:图片的输入维度比较大,具体如下图所示,这就造成了权重w的维度比较大,那么他所占用的内存也会比较大,计算w的计算量也会很大

    Dar_Alpha
  • 吴恩达深度学习笔记 3.1~3.11 浅层神经网络

    神经网络的结构与逻辑回归类似,只是神经网络的层数比逻辑回归多了一层,多出的中间一层叫隐藏层,那么,神经网络的计算就相当于多进行一次逻辑回归的计算

    Dar_Alpha
  • 自学Python一 迷茫中的开端!

      有心学习一下Python,多门技术多条路啊。经历了找教程,看代码,写demo,这东西入门容易精通难啊!又因为请了两周婚假彻底忘光光。想了想自己还是边复习边写...

    叁金
  • 自学Python十二 战斗吧Scrapy!

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

    叁金

扫码关注云+社区

领取腾讯云代金券