![](/img/trans.png)
[英]Define instance attribute to store one of the two “constant” class attributes [on hold]
[英]Python - Define class with one method and one attribute
我是 Python 的新手,并尝试创建一个程序,该程序定义了一个名为 person 的 class,该程序有一个名为 hello 的方法和一个名为 name 的属性,该属性表示该人的姓名。 hello 方法应将以下字符串打印到屏幕上:
'我的名字是名称属性,我是class 的名字'
1)实例化class的一个object,2)运行实例化的object的hello方法(例如,John.hello()),3)使用
这是我的代码:
import sys
class person():
def __init__(self,_name):
self.name=_name
_name = sys.argv[1]
def hello(self):
print (f"My name is {sys.argv[1]} I am a {self.__class__.__name__}")
p1 = person()
p1.hello()
def main():
p = person()
print (type(p))
if __name__ == "__main__":
main()
预期的示例 output:
My name is Obi-Wan and I am a person
<class '__main__.person'>
实际 output:
File "classname.py", line 10, in <module>
p1 = person()
TypeError: __init__() missing 1 required positional argument: '_name'
我不知道我做错了什么。 请帮忙!
您的问题是您创建了一个 class 需要一个参数,但随后没有给它请求的参数。 由于__init__
function 需要_name
参数,因此person
class 的初始化必须使用名称完成,例如person('my_name')
。
由于您将名称作为输入,您可能希望将其保存在 class 中并重复使用,而不是每次都从sys.argv
中提取它。 所以最终的结果应该是这样的——
import sys
class person():
def __init__(self, name):
self.name = name
def hello(self):
print(f"My name is {self.name} I am a {self.__class__.__name__}")
def main():
input_name = sys.argv[1]
p = person(input_name)
p.hello()
if __name__ == "__main__":
main()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.