Python:是执行的入口点(\uuuu main\uuuu)?
我编写了以下python代码,并尝试使用Python:是执行的入口点(\uuuu main\uuuu)?,python,class,object,Python,Class,Object,我编写了以下python代码,并尝试使用\uuuu main\uuu初始化两个类对象,但在运行python classPerson.py时出现了以下错误。我想知道在python中初始化类对象的正确方法是什么 Person(object): def __init__(self, name, salary): self.name = name self.salary = salary def getName(): return se
\uuuu main\uuu
初始化两个类对象,但在运行python classPerson.py
时出现了以下错误。我想知道在python中初始化类对象的正确方法是什么
Person(object):
def __init__(self, name, salary):
self.name = name
self.salary = salary
def getName():
return self.name
def getSalary():
return self.salary
if __name__ == '__main__':
bob = Person('Bob Smith', 40000)
sue = Person('Sue Funk', 35000)
print 'bob makes a salary of %d' % (bob.getSalary)
print 'sue's full name is %s' % (sue.getName)
错误:
Traceback (most recent call last):
File "classTest1.py", line 1, in <module>
class Person(object):
File "classTest1.py", line 14, in Person
bob = Person('Bob Smith', 40000)
NameError: name 'Person' is not defined
回溯(最近一次呼叫最后一次):
文件“classTest1.py”,第1行,在
类人(对象):
文件“classTest1.py”,第14行,本人
鲍勃=人(“鲍勃·史密斯”,40000)
NameError:未定义名称“Person”
如果将缩进到“\uuuuu name\uuuuuu==”\uuuuuuu main\uuuuuuuuuu”
阻止一个级别太远。试着跑步
class Person(object):
def __init__(self, name, salary):
self.name = name
self.salary = salary
def getName(self):
return self.name
def getSalary(self):
return self.salary
if __name__ == '__main__':
bob = Person('Bob Smith', 40000)
sue = Person('Sue Funk', 35000)
print 'bob makes a salary of %d' % (bob.getSalary())
print "sue's full name is %s" % (sue.getName())
因为在您的代码中,if
块位于Person
类中,并且您在构建该类之前正在创建该类的对象,这会给您带来一个错误。您需要取消将if _; name
块包含在Person
类中
它执行得太早,而且当时仍在构建Person
类
通过将其缩进到与Person
类主体中的方法相同的级别,就可以将测试部分作为类定义。当类仍在定义时执行,因此Person
类引用尚不存在
更正代码:
class Person(object):
def __init__(self, name, salary):
self.name = name
self.salary = salary
def getName(self):
return self.name
def getSalary(self):
return self.salary
if __name__ == '__main__':
bob = Person('Bob Smith', 40000)
sue = Person('Sue Funk', 35000)
print 'bob makes a salary of %d' % (bob.getSalary())
print "sue's full name is %s" % (sue.getName())
注:
getSalary()
和getName()
方法self
参数sue的
包含一个引号,最好使用双引号分隔该字符串)定义Person类时不能使用它,必须将其降低一个缩进级别
class Person(object):
def __init__(self, name, salary):
self.name = name
self.salary = salary
def getName(self):
return self.name
def getSalary(self):
return self.salary
if __name__ == '__main__':
bob = Person('Bob Smith', 40000)
sue = Person('Sue Funk', 35000)
print 'bob makes a salary of %d' % (bob.getSalary())
print "sue's full name is %s" % (sue.getName())
编辑根据Sukrit Kalra评论更正了上一句话
EDIT调用方法的正确方法是使用括号,定义方法的正确方法是在参数中使用self但是使用类的惯用方法是不使用getter和setter
class Person(object):
def __init__(self, name, salary):
self.name = name
self.salary = salary
if __name__ == '__main__':
bob = Person('Bob Smith', 40000)
sue = Person('Sue Funk', 35000)
print 'bob makes a salary of %d' % (bob.salary)
print "sue's full name is %s" % (sue.name)
您的代码是无效的,因为最后一个字符串文字无法编译(在值周围加上一个未转义的单引号)。请检查最后一个
print
语句:问题还比较多,;你需要注意这些方法是如何工作的(提示:调用它们将是一个开始,给方法提供正确的参数也会有帮助)。更正了它,不在乎有多少不惯用的python代码哇,你们太快了!非常感谢你!你们提醒了我缩进在python中的重要性!:)欣赏它。代码还有几个问题;请参阅我的答案,以解决Sukrit尚未解决的另一个问题。:-)真不敢相信我错过了马蒂恩!将立即在代码中修复它。谢谢。:)根据这些方法,应该命名为get_name
和get_salary
@Matthias:我对新手的命名规则并不挑剔。这一切都会在以后发生。这就是为什么我添加它作为一个评论,而不是试图写一个自己的答案。