小白求助一个关于__init__的问题
一般情况下在创立一个新类 用__init__构造属性写法是class New(object):
def __init__(self,name):
self.name = name
如果构造时候不确定要增加什么属性 就用
def __init__(self,*args):
然后实例化的时候从参数传入
a= A('name')
这时候 def __init__(self,*args):
这里怎么写啊?
比如从实例传入三个参数
a = A('name','age','wight') 本帖最后由 jackz007 于 2021-1-22 21:18 编辑
class New:
def __init__(self , * args):
self . name = args
def __repr__(self):
s = self . name
for i in range(1 , len(self . name)):
s = s + ' ' + self . name
return s
a = New('name' , 'age' , 'weight')
print(a) 写类的时候就不应该出现这种一个属性都不确定的。 需要传参的时候指定是什么参数
class New:
def __init__(self, name=None, age=None, weight=None):
self.name = name
self.age = age
self.weight = weight
@classmethod
def fromdict(cls, hs):
return cls(**hs)
aaa = {'name':'aaa'}
a = New.fromdict(aaa)
b = New(name='bbb')
print(a.name)
print(b.name) 参数名就是args,他是一个tuple对象,可以按照下标进行索引取值。 这个题目有点没有意义了,还是对类的逻辑有些理解的不够透彻,谢谢各位。 kogawananari 发表于 2021-1-23 12:35
需要传参的时候指定是什么参数
@classmethod,是什么意思呀 wyj19851203 发表于 2021-1-23 18:52
@classmethod,是什么意思呀
一般方法的第一个参数是实例 self
方法加了这个 第一个参数就不是实例了 而是类本身 cls *args,是把传入的参数打包成tuple。知道它是元组,就用操作元组的方法去操作 wyj19851203 发表于 2021-1-23 18:52
@classmethod,是什么意思呀
就是类的方法,可以这样调用:
New.fromdict()
而不是实例的方法:
New().fromdict()
页:
[1]