我试图在Python中实现方法重载:
class A:
def stackoverflow(self):
print 'first method'
def stackoverflow(self, i):
print 'second method', i
ob=A()
ob.stackoverflow(2)
Run Code Online (Sandbox Code Playgroud)
但输出是second method 2
; 类似的:
class A:
def stackoverflow(self):
print 'first method'
def stackoverflow(self, i):
print 'second method', i
ob=A()
ob.stackoverflow()
Run Code Online (Sandbox Code Playgroud)
给
Traceback (most recent call last):
File "my.py", line 9, in <module>
ob.stackoverflow()
TypeError: stackoverflow() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
我该如何工作?
是什么区别globals()
,locals()
和vars()
?他们回报了什么?结果更新是否有用?
在我的Python应用程序中,我想创建一个既是a staticmethod
又是a的方法abc.abstractmethod
.我该怎么做呢?
我尝试应用两个装饰器,但它不起作用.如果我这样做:
import abc
class C(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
@staticmethod
def my_function(): pass
Run Code Online (Sandbox Code Playgroud)
我得到一个异常*,如果我这样做:
class C(object):
__metaclass__ = abc.ABCMeta
@staticmethod
@abc.abstractmethod
def my_function(): pass
Run Code Online (Sandbox Code Playgroud)
不强制执行抽象方法.
如何制作抽象静态方法?
*例外:
File "c:\Python26\Lib\abc.py", line 29, in abstractmethod
funcobj.__isabstractmethod__ = True
AttributeError: 'staticmethod' object has no attribute '__isabstractmethod__'
Run Code Online (Sandbox Code Playgroud) 为什么以下脚本会出错:
payIntList[i] = payIntList[i] + 1000
TypeError: 'map' object is not subscriptable
payList = []
numElements = 0
while True:
payValue = raw_input("Enter the pay amount: ")
numElements = numElements + 1
payList.append(payValue)
choice = raw_input("Do you wish to continue(y/n)?")
if choice == 'n' or choice == 'N':
break
payIntList = map(int,payList)
for i in range(numElements):
payIntList[i] = payIntList[i] + 1000
print payIntList[i]
Run Code Online (Sandbox Code Playgroud) 我们有一个返回城市/州元组的对象方法,即('Boston', 'MA')
.在某些有效情况下,没有有效的城市/州返回.在风格上,返回更有意义None
,还是(None, None)
在这种情况下包含两元素元组?
什么是Enum
在Python 3.4中扩展类型的最佳实践,是否有可能这样做?
例如:
from enum import Enum
class EventStatus(Enum):
success = 0
failure = 1
class BookingStatus(EventStatus):
duplicate = 2
unknown = 3
Traceback (most recent call last):
...
TypeError: Cannot extend enumerations
Run Code Online (Sandbox Code Playgroud)
目前没有可能的方法来创建一个带有成员的基本枚举类,并在其他枚举类中使用它(如上例所示).有没有其他方法来实现Python枚举的继承?
出于某种原因,该super()
方法并不总是按预期运行,选择返回:
TypeError('super(type, obj): obj must be an instance or subtype of type)'
Run Code Online (Sandbox Code Playgroud)
我理解错误的含义.我不明白为什么它会出现错误.这是破解的代码片段.系统中的所有对象都是新样式对象.
真正有趣的是,这个错误并不总是出现.我不知道是什么导致了它.该super()
在方法Retrieval
中传递Retrieval
类,然后本身作为一个对象,它是,据我所知,究竟如何super()
是应该被调用.
有什么想法吗?
在文件DBConnection.py中:
class DBAdminConnection(object):
def __init__(self):
self.user = DBUserConnection().user
self.submissions = DBSubmissionConnection()
Run Code Online (Sandbox Code Playgroud)
在文件Retrieval.py中
class Retrieval(DBConnection.DBAdminConnection):
def __init__(self, username=None, password=None, unique_key=None):
super(Retrieval,self).__init__()
if username and password:
self.username = username
self.user.login(username,password, config.DATABASE)
if self.user.error:
raise UserLoginError(username)
self.unique_key = unique_key
Run Code Online (Sandbox Code Playgroud) 什么是本地计算机上文件夹的UNC路径,我该如何访问它?我试过了:
我可以在\中看到该文件夹,但无法进入(无法访问).
错误信息:
您可能没有权限使用此网络资源.请与此服务器的管理员联系,以了解您是否具有访问权限.无法访问网络位置.有关网络故障排除的信息,请参阅Windows帮助.
我的电脑未连接到网络.
说明以下内容是正确的:
如果在C函数中创建了Python对象,但该函数没有返回它,INCREF
则不需要,但是a DECREF
.
[false]如果函数确实返回了它,你需要INCREF
在接收返回值的函数中.[/ false]
当分配了C类型的变量作为属性,如double
,int
等等,给Python对象,没有INCREF
或DECREF
需要.
将Python对象作为属性分配给其他Python对象,如下所示:
PyObject *foo;
foo = bar // A Python object
tmp = self->foo;
Py_INCREF(foo);
self->foo = foo;
Py_XDECREF(tmp);
//taken from the manual, but it is unclear if this works in every situation
Run Code Online (Sandbox Code Playgroud)编辑: - >我可以在任何情况下安全地使用它吗?(没有碰到一个导致我问题的地方)
DECREF
用于其作为属性的每个其他Python对象,但不适用于C类型的属性.编辑
'C type as a attribute'是指bar和baz:
typedef struct {
PyObject_HEAD
PyObject *foo;
int bar;
double baz;
} FooBarBaz;
Run Code Online (Sandbox Code Playgroud) python ×9
python-3.x ×3
class ×1
coding-style ×1
enums ×1
inheritance ×1
iterator ×1
networking ×1
overloading ×1
python-c-api ×1
super ×1
superclass ×1
windows ×1