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中,标识符有几点 ...
随机推荐
- XmlRootElement JAXB
http://desert3.iteye.com/blog/1570092(文章已经很好) 看了那边文章以后尝试后写点直白的 PROPERTY: JAXB 绑定类中的每个获取方法/设置方法对将会自动绑 ...
- 代码质量管理工具——SonarQube
写在前面 SonarQube(简称Sonar)是管理代码质量的开放平台,它可以快速地对代码质量进行分析,并给出合理的解决方案,提高管理效率,保证代码质量. SonarQube的流行,在于以下几点: 开 ...
- Java学习过程中的总结的小知识点(长期更新)
Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...
- SQL Server需要监控哪些计数器
常规计数器 收集操作系统服务器的服务器性能信息,包括Processor.磁盘.网络.内存 Processor 处理器 1.1 % Processor Time指处理器用来执行非闲置线程时间的百分比.通 ...
- 关于在vs2010中编译Qt项目时出现“无法解析的外部命令”的错误
用Cmake讲Qt.VTK和ITK整合后,打开解决方案后添加新类时运行会出现“n个无法解析的外部命令”的错误. 原因是新建的类未能生成moc文件,解决办法是: 1.右键 要生成moc文件的.h文件,打 ...
- SVN部署和使用
一.SVN介绍 svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件. 二.服务器端和客户端 1.服务器端软件Subver ...
- informatica读取FTP文件
以下为一个完整的informatica读取ftp文件,并导入到系统中. 第一步: 通过shell脚本下载压缩包文件 /server/infa_shared/crm_prod/shell/ftpFrom ...
- NDK 笔记(一)
参考:https://developer.android.com/studio/projects/add-native-code.html#link-gradle 使用Android Studio 2 ...
- MFC双缓存技术代码
屏蔽背景刷新,在View中添加对WM_ERASEBKGND的响应,直接返回TRUE: BOOL CTEMV1View::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息 ...
- windows 平台 php_Imagick 拓展遇到的那些坑!
我的php环境是使用了phpstudy 下载地址:http://www.phpstudy.net/a.php/211.html 最终并未解决问题 持续更新~ 1.首先到官网上 http://www.i ...