Python类输入参数

lar*_*111 10 python oop

我是OOP的新手.我的想法是实现以下类:

class name(object, name):
    def __init__(self, name):
        print name
Run Code Online (Sandbox Code Playgroud)

然后想法是创建该类的两个实例:

person1 = name("jean")
person2 = name("dean")
Run Code Online (Sandbox Code Playgroud)

我知道,这是不可能的,但是如何将输入参数传递给类的实例?

joe*_*ick 22

>>> class name(object):
...     def __init__(self, name):
...         self.name = name
... 
>>> person1 = name("jean")
>>> person2 = name("dean")
>>> person1.name
'jean'
>>> person2.name
'dean'
>>>
Run Code Online (Sandbox Code Playgroud)

这是你想要的?


Abr*_*amB 19

你最初定义这个类的问题是你写的:

class name(object, name):
Run Code Online (Sandbox Code Playgroud)

这意味着该类继承了名为"object"的基类,以及名为"name"的基类.但是,没有名为"name"的基类,因此它失败了.相反,您需要做的就是在特殊的init方法中使用变量,这意味着类将其作为变量.

class name(object):
  def __init__(self, name):
    print name
Run Code Online (Sandbox Code Playgroud)

如果要在类中定义的其他方法中使用该变量,可以将名称指定给self.name,并在类中的任何其他方法中使用该名称,而无需将其传递给方法.

例如:

class name(object):
  def __init__(self, name):
    self.name = name
  def PrintName(self):
    print self.name

a = name('bob')
a.PrintName()
bob
Run Code Online (Sandbox Code Playgroud)


frl*_*lan 8

你只需要用正确的语法来完成它.让我给你一个我用Python交互式shell做的最小例子:

>>> class MyNameClass():
...   def __init__(self, myname):
...       print myname
... 
>>> p1 = MyNameClass('John')
John
Run Code Online (Sandbox Code Playgroud)


The*_*ter 5

name从类声明中删除参数。init 方法用于在创建时将参数传递给类。

class Person(object):
  def __init__(self, name):
    self.name = name

me = Person("TheLazyScripter")
print me.name
Run Code Online (Sandbox Code Playgroud)