繁体   English   中英

Python - 用一种方法和一种属性定义 class

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM