导入所有模块与从模块导入特定功能相比,没有属性错误

时间:2019-01-18 08:09:57

标签: python python-3.x

当我写信时:

package com.example.ft.aidt;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.nfc.Tag;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.gson.JsonElement;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Map;

import ai.api.AIListener;
import ai.api.android.AIConfiguration;
import ai.api.android.AIService;
import ai.api.model.AIError;
import ai.api.model.AIResponse;
import ai.api.model.Result;
import ai.api.ui.AIDialog;

public class ai extends AppCompatActivity implements AIListener {
public static final String TAG = ai.class.getName();
private Button bu,nu;
private TextView resp;
private  AIService aiService;
private TextView a;
private ImageView yu;
private  TextToSpeech joi;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ai);
    yu  =  (ImageView) findViewById(R.id.imageView20);
    int permi = 
ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO);
     if(permi != PackageManager.PERMISSION_GRANTED)
     {
         Toast.makeText(this, "Permission Denied", 
Toast.LENGTH_SHORT).show();
         MakeRequest();
     }
    final AIConfiguration config = new 
 AIConfiguration("b0369e8530c14cc0990cccab8b9f0289",
            AIConfiguration.SupportedLanguages.English,
            AIConfiguration.RecognitionEngine.System);

     aiService = AIService.getService(this, config);
    aiService.setListener(this);
    bu =(Button) findViewById(R.id.button12);
    resp=(TextView) findViewById(R.id.textView10);
    a = (TextView) findViewById(R.id.textView12);
        joi = new TextToSpeech(ai.this, new TextToSpeech.OnInitListener() 
    {
        @Override
        public void onInit(int status) {

        }
    });
    yu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(ai.this,"Here you can talk to AIDT and converse 
 with it. If you fail to get a reply, please check your internet 
 connection.",Toast.LENGTH_LONG).show();
        }
    });
    bu.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            resp.setText("ERROR");
            return false;
        }
    });
    bu.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             aiService.startListening();
         }
     });
}
protected void MakeRequest() {
    ActivityCompat.requestPermissions(this, new String[] 
{Manifest.permission.RECORD_AUDIO},007);

}
@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] 
grantResults) {
    switch (requestCode) {
        case 007: {

            if (grantResults.length == 0
                    || grantResults[0] !=
                    PackageManager.PERMISSION_GRANTED) {


            } else {
            }
            return;
        }}}

@Override
public void onResult( final  AIResponse response) {


        Log.i("", response.toString());
        ArrayList<String> ap = new ArrayList<>();
        ArrayList<String> apk = new ArrayList<>();
        final Result result1 = response.getResult();
        String parameterString = "";
        if (result1.getParameters() != null && 
!result1.getParameters().isEmpty()) {
            for (final Map.Entry<String, JsonElement> entry : 
result1.getParameters().entrySet()) {
                parameterString += "(" + entry.getKey() + ", " + 
entry.getValue() + ") ";
            }
        }
        final String sppech = result1.getFulfillment().getSpeech();
        String ae = result1.getResolvedQuery().toString();

        a.setText("\n Baymax: " + result1.getFulfillment().getSpeech());
        resp.setText("\n You: " + result1.getResolvedQuery());
        // Show results in TextView.


        joi.speak(result1.getFulfillment().getSpeech(), 
TextToSpeech.QUEUE_FLUSH, null, null);
    }


@Override
public void onError(AIError error)
{
 resp.setText(error.toString());
}

@Override
public void onAudioLevel(float level) {

}

@Override
public void onListeningStarted() {


}

@Override
public void onListeningCanceled() {

}

@Override
public void onListeningFinished() {

}
}

上面的函数未返回属性名称“ request”

但在导入所需的所有功能时有效:

package com.example.ft.aidt;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.nfc.Tag;
import android.speech.tts.TextToSpeech;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.gson.JsonElement;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Map;

import ai.api.AIListener;
import ai.api.android.AIConfiguration;
import ai.api.android.AIService;
import ai.api.model.AIError;
import ai.api.model.AIResponse;
import ai.api.model.Result;
import ai.api.ui.AIDialog;

public class ai extends AppCompatActivity implements AIListener {
public static final String TAG = ai.class.getName();
private Button bu,nu;
private TextView resp;
private  AIService aiService;
private TextView a;
private ImageView yu;
private  TextToSpeech joi;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ai);
    yu  =  (ImageView) findViewById(R.id.imageView20);
    int permi = 
ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO);
     if(permi != PackageManager.PERMISSION_GRANTED)
     {
         Toast.makeText(this, "Permission Denied", 
Toast.LENGTH_SHORT).show();
         MakeRequest();
     }
    final AIConfiguration config = new 
 AIConfiguration("b0369e8530c14cc0990cccab8b9f0289",
            AIConfiguration.SupportedLanguages.English,
            AIConfiguration.RecognitionEngine.System);

     aiService = AIService.getService(this, config);
    aiService.setListener(this);
    bu =(Button) findViewById(R.id.button12);
    resp=(TextView) findViewById(R.id.textView10);
    a = (TextView) findViewById(R.id.textView12);
        joi = new TextToSpeech(ai.this, new TextToSpeech.OnInitListener() 
    {
        @Override
        public void onInit(int status) {

        }
    });
    yu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(ai.this,"Here you can talk to AIDT and converse 
 with it. If you fail to get a reply, please check your internet 
 connection.",Toast.LENGTH_LONG).show();
        }
    });
    bu.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            resp.setText("ERROR");
            return false;
        }
    });
    bu.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             aiService.startListening();
         }
     });
}
protected void MakeRequest() {
    ActivityCompat.requestPermissions(this, new String[] 
{Manifest.permission.RECORD_AUDIO},007);

}
@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] 
grantResults) {
    switch (requestCode) {
        case 007: {

            if (grantResults.length == 0
                    || grantResults[0] !=
                    PackageManager.PERMISSION_GRANTED) {


            } else {
            }
            return;
        }}}

@Override
public void onResult( final  AIResponse response) {


        Log.i("", response.toString());
        ArrayList<String> ap = new ArrayList<>();
        ArrayList<String> apk = new ArrayList<>();
        final Result result1 = response.getResult();
        String parameterString = "";
        if (result1.getParameters() != null && 
!result1.getParameters().isEmpty()) {
            for (final Map.Entry<String, JsonElement> entry : 
result1.getParameters().entrySet()) {
                parameterString += "(" + entry.getKey() + ", " + 
entry.getValue() + ") ";
            }
        }
        final String sppech = result1.getFulfillment().getSpeech();
        String ae = result1.getResolvedQuery().toString();

        a.setText("\n Baymax: " + result1.getFulfillment().getSpeech());
        resp.setText("\n You: " + result1.getResolvedQuery());
        // Show results in TextView.


        joi.speak(result1.getFulfillment().getSpeech(), 
TextToSpeech.QUEUE_FLUSH, null, null);
    }


@Override
public void onError(AIError error)
{
 resp.setText(error.toString());
}

@Override
public void onAudioLevel(float level) {

}

@Override
public void onListeningStarted() {


}

@Override
public void onListeningCanceled() {

}

@Override
public void onListeningFinished() {

}
}

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

这似乎可行:

>> print(oStructuredBOMView.BOMRows.Item(1))
<win32com.gen_py.Autodesk Inventor Object Library.BOMRow instance at 0x88831536>

是否需要使用其他模块:urllib.parse和urllib.error? 否则,这似乎还可以。

答案 1 :(得分:0)

来自this answer:使用import语句时,它总是搜索实际的模块路径(和/或sys.modules);它不使用由于先前的导入而存在的本地名称空间中的模块对象。

因此,如果要使用urllib的任何对象,则需要输入要使用的实际对象:

import urllib.request

您也可以这样做:

from urllib import request

fhand = request.urlopen('http://data.pr4e.org/romeo.txt')