初学python 没有编程基础 这个自己的编程问题出在哪儿
class C:def __init__(self,*x):
self.x = x
def getNumber(self):
if len(x):
print('一共有%d个参数,' % len(x))
for i in x:
print(i)
else:
print('无参数')
>>> c = C()
>>> c = C(1,2,3,4,5,6)
>>> c
标准答案
class C:
def __init__ (self,*args) :# *arg表示不确定个数的参数
ifnot args :
print ("并没有传入参数")
else :
print ("传入了%d个参数,分别是:"%len(args),end = ' ')
for each in args :
print (each , end = ' ')
c = C()
c = C(1,2,3) print(c.getNumber)
<bound method C.getNumber of <__main__.C object at 0x000001E9B24F4E80>> class C:
def __init__(self,*x):
self.x = x
def getNumber(self):
if len(self.x):
print('一共有%d个参数,' % len(self.x))
for i in self.x:
print(i)
else:
print('无参数')
c=C()
c.getNumber()
class C:
def __init__(self,*x):
self.x = x
def getNumber(self):#有报错啊,把这里的x改成self.x
if len(self.x):
print('一共有%d个参数:' % len(self.x))
for i in self.x:
print(i)
return ""#避免none(笨办法)
else:
# print('无参数') #避免返回值为空显示的“none”
return "无参数 "
c1 = C()
print(c1.getNumber())
c2 = C(1,2,3,4)
print(c2.getNumber()) 输出为无参数
一共有4个参数:
1
2
3
4
代码帮你改了一下
首先;你犯下的最严重的错误是 getNumber 方法中的if判断当中的条件 len(x) 是错误的.因为x的作用域在 __init__()方法当中. getNumber 方法中从来没有过x这个变量
所以这里要改成 len(seif.x) 可以简单的理解为self.x 的作用域在这个类当中
还有就是你print(c.getNumber) 你这里就是在打印c对象中的getNumber()方法的属性(姑且叫属性吧) 而不是执行getNumber方法 执行的话需要加上()
Python 3.8.6rc1 (tags/v3.8.6rc1:08bd63d, Sep7 2020, 23:10:23) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> class C:
def __init__(self,*x):
self.x = x
def getNumber(self):
if len(self.x):
print('一共有%d个参数,' % len(self.x))
for i in self.x:
print(i)
else:
print('无参数')
>>>
>>> c = C()
>>> c.getNumber()
无参数
>>> c = C(1,2,3,4,5,6,7,8)
>>> c.getNumber()
一共有8个参数,
1
2
3
4
5
6
7
8
>>> c.getNumber
<bound method C.getNumber of <__main__.C object at 0x0000023CB501CC40>>
>>>
页:
[1]