python 新手遇到的问题
作为新手,我把之前遇到的问题贴出来
错误提示1: TypeError: unbound method a() must be called with A instance as first argument (got nothing instead)
class A:
def a(self):
print("I'm a") A.a()
执行报错TypeError: unbound method a() must be called with A instance as first argument (got nothing instead)
表示没有对类进行实例, 改为:
class A:
def a(self):
print("I'm a")
obj=A()
obj.a()
或者:
class A:
@staticmethod # 静态方法
def a():
print("I'm a") A.a()
说明:
一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问; 二是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用; 三是在def前面加上@staticmethod,这种类方法是静态的类方法,类似于c++的静态函数,他的一个特点是参数可以为空,同样支持类名和对象两种调用方式; |
在看一个例子:
class Person:
count = 0
def __init__(self):
self.name='Flay'
self.count+=1
Person.count +=2
print(self.count)
print(Person.count) if __name__ == '__main__':
p = Person()
#Person.name
输出:
1
2
因为self 是类本身属性, Person.count 表示count为类的静态属性
如果直接Person.name 会直接报错:AttributeError: class Person has no attribute 'name' 错误提示2:RuntimeError: super-class __init__() of type ani was never called
# -*- coding:utf8 -*-
from PyQt4.QtGui import *
import sys class ani(QWidget):
def __init__(self):
self.resize(10, 20) if __name__=='__main__':
app = QApplication(sys.argv)
window = ani()
window.show()
sys.exit(app.exec_())
报错原因:该类ani继承自QWidget,但没有给QWidget构造函数,如果类ani不继承任何基类可以这样:
class ani(object):
def __init__(self):
print('aaa') if __name__=='__main__':
win = ani()
所以,创建了一个名为 ani 的新类, 该类继承 QWidget 类。 因此我们必须调用两个构造函数——ani 的构造函数和继承类 QWidget 类的构造函数,代码改为如下:
from PyQt4.QtGui import *
import sys class ani(QWidget):
def __init__(self):
super(ani, self).__init__()
self.resize(10, 20) if __name__=='__main__':
app = QApplication(sys.argv)
window = ani()
window.show()
sys.exit(app.exec_())
错误3:You are using pip version 7.1.2, however version 8.1.2 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' comm and.
pip install *** 报错
解决办法:
C:\Python35\Scripts>easy_install.exe pip==8.1.
然后在安装包
C:\Python35>pip install C:\pypiwin32--cp35-none-win32.whl
错误4: Unable to find "/usr/include/python3.6m/pyconfig.h" when adding binary and data files.
使用pyinstaller.py 打包的时候提示找不到pyconfig.h 文件
解决办法; 安装python3-dev
sudo apt install python3-dev
原本/usr/include/python3.6m目录只有3个.h文件,安装python3-dev后该目录变为100多个.h文件,其中就包含pyconfig.h
问题5: pip修改镜像源
pip的镜像地址: https://pypi.org 因为地址在国外,pip install packages 慢的怀疑人生,或者出现timeout.此时可以考虑换成国内pypi镜像源
地址:https://pypi.doubanio.com/simple/
新建文件: ~./pip/pip.conf
填写index-url
[global]
index-url = https://pypi.doubanio.com/simple/
注意一点,地址是https,负债会提示: The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host pypi.doubanio.com'.
问题6: 字符串(str)列表(list)元组(tuple) 互相转换
mystr='x1y1'
mylist=['x2y2']
mytuple=('x3y3',) # ('x3y3') == <class 'str'>
相互转换
# 字符串 转 列表
Cmylist=[mystr]
print(Cmylist)
Cmylist=mystr.split('')
print(Cmylist)
# 字符串 转 元组
CmyTuple=(mystr,)
print(CmyTuple)
# 列表 转 字符串
Cmystr="".join(mylist) #"@" @连接符
print(Cmystr)
# 列表 转 元组
CmyTuple=tuple(mylist)
print(CmyTuple)
# 元组 转 列表
Cmylist=list(mytuple)
print(Cmylist)
输出:
['x1y1']
['x', 'y', '']
('x1y1',)
x2y2
('x2y2',)
['x3y3']
python 新手遇到的问题的更多相关文章
- (转)Python新手写出漂亮的爬虫代码2——从json获取信息
https://blog.csdn.net/weixin_36604953/article/details/78592943 Python新手写出漂亮的爬虫代码2——从json获取信息好久没有写关于爬 ...
- (转)Python新手写出漂亮的爬虫代码1——从html获取信息
https://blog.csdn.net/weixin_36604953/article/details/78156605 Python新手写出漂亮的爬虫代码1初到大数据学习圈子的同学可能对爬虫都有 ...
- Python 新手常犯错误
Python 新手常犯错误(第二部分) 转发自:http://blog.jobbole.com/43826/ 作用域 在这篇文章里,我们来关注作用域在Python被误用的地方.通常,当我们定义了一个全 ...
- python新手必躺的5大坑
python新手必躺的5大坑 对于Python新手来说,写代码很少考虑代码的效率和简洁性,因此容易造成代码冗长.执行慢,这些都是需要改进的地方.本文是想通过几个案列给新手一点启发,怎样写python代 ...
- python新手上车001
python新手上车001 一般建议: 1.下载:从https://www.python.org/downloads/windows/ python官网进行下载建议就从3.7.2开始吧(我从这个版本 ...
- Python新手学习raise用法
当程序出现错误时,系统会自动引发异常.除此之外,Python也允许程序自行引发异常,自行引发异常使用 raise 语句来完成. 很多时候,系统是否要引发异常,可能需要根据应用的业务需求来决定,如果程序 ...
- [Python]新手写爬虫全过程(已完成)
今天早上起来,第一件事情就是理一理今天该做的事情,瞬间get到任务,写一个只用python字符串内建函数的爬虫,定义为v1.0,开发中的版本号定义为v0.x.数据存放?这个是一个练手的玩具,就写在tx ...
- Python 新手常犯错误(第二部分)
转发自:http://blog.jobbole.com/43826/ 在之前几个月里,我教一些不了解Python的孩子来慢慢熟悉这门语言.渐渐地,我发现了一些几乎所有Python初学者都会犯的错误,所 ...
- Python新手学习基础之初识python——与众不同2
看完了Python的缩进,现在来看看Python的标识符.引号和注释. 标识符 关于Python的标识符,其实不是与众不同,只是有一定的规则. 标识符是编程时使用的名字.在Python中,标识符有几点 ...
随机推荐
- 打开gvim发现菜单栏是乱码
默认安装将会把中文区域设置为zh_CN.utf8,而GVim能识别的中文区域设置为zh_CN.UTF-8.因此GVim会在启动时报错,且 无法正常加载中文菜单.解决方案:Linux下编辑 ~/.vim ...
- js计时器,点击开始计时,再点击停止
点击倒计时开始,点击停止,再次点击又开始,再点停止... <i id=</i>秒 <em onclick="timeOpen();">开始</e ...
- 神经网络模型及R代码实现
神经网络基本原理 一.神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias ).则神 ...
- VirtualBox COM对象获取失败
问题描述: Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUnknown works. ...
- 【转】iOS9适配
Demo1_iOS9网络适配_改用更安全的HTTPS iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制 ...
- IIS7.0发布Web服务器0002
asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 分类: BS学 ...
- [转]MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
- js 中的快速排序算法简单实现
对于快速排序,最早是在c++中看到,它是利用指针来交换顺序,其实无论哪种语言,原理 和 思想都是一样,然而真正用起来的时候就特别容易忽略一些事实,导致实现失败.废话少说,下面用js实现一下快速排序: ...
- 购物车相关 js
<div class="caigou"> <form action="" method="post"> <di ...
- Android中锁定文件的方法
androidSDK中并没有锁定文件相关的api. 但是android是基于linux操作系统的,linux比较底层,灵活性也更大,为了实现锁定文件的效果,大概有以下几种办法: 用chmod命令修改文 ...