Python 如何编写两个同名类
我试图在一个文件中编写两个同名的类。大概是这样的:Python 如何编写两个同名类,python,Python,我试图在一个文件中编写两个同名的类。大概是这样的: class A: def __init__(self, name): self.name=name class A: def __init__(self, id, name,pass): self.id=id self.name=name self.type=pass 并在此处使用: obj1=A(name) obj2=A(id,name,pass) 可能吗
class A:
def __init__(self, name):
self.name=name
class A:
def __init__(self, id, name,pass):
self.id=id
self.name=name
self.type=pass
并在此处使用:
obj1=A(name)
obj2=A(id,name,pass)
可能吗?你不能。类声明只是一个声明,所以第二个声明将覆盖第一个声明,就像执行x=1一样;x=2。您可能需要的是类的替代构造函数。请参见。简言之,没有。但是: 如果您具有相同的功能,只想拥有不同的构造函数,请使用默认参数:
class A:
def __init__(self, name, id=None, pass=None):
self.id=id
self.name=name
self.type=pass
# These both work
obj1=A(name)
obj2=A(id,name,pass)
如果您有不同的功能:使用不同的名称。您可以使用kwargs,如
输出:
以我的经验来说不是。为什么每个类都需要使用相同的类呢?使用kwargs,在_init________________________________________。阅读有关默认参数的内容如果你问一个问题,问你到底想做什么,别人会告诉你一个更好的方法,那么使用默认参数的单次初始化可能就足够了here@DeepSpace:可能吧,但这篇文章让我想起了类java中的构造函数重载
$ cat kwargs.py
class A:
def __init__(self, *args, **kwargs):
self.id= kwargs.get('id')
self.name = kwargs.get('name')
self.type = kwargs.get('type')
def __str__(self):
return '{}(id={}, name={}, type={})'.format(
self.__class__.__name__,
self.id,
self.name,
self.type,
)
obj1 = A(name='foo')
obj2 = A(id='id1', name='foo', type='footype')
print(obj1)
print(obj2)
$ python kwargs.py
A(id=None, name=foo, type=None)
A(id=id1, name=foo, type=footype)