欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习Python中遇到的问题

程序员文章站 2022-07-10 19:12:51
...
最近学习Python中。
先上代码:
# -*- coding: UTF-8 -*-
class Person:
    '''Represents a person'''
    population=0
    def _init_(self,name):
        self.name=name
        print '初始化参数 %s'%self.name
        Person.population+=1
    def _del_(self):
        '''I am dying'''
        print '%s says Bye'%self.name
        Person.population-=1
        if Person.population==0:
            print ' I am the last one'
        else:
            print 'There are still %d people leftl'%Person.population
    def sayHi(self):
        '''Greeting by the people.

        Really,that's all it does.'''
        print 'Hi,My name is %s'%self.name
    def howMany(self):
        '''print the current population'''
        if Person.population==1:
            print 'I am the only one person here'
        else:
            print 'We have %d persons here'%Person.population
print '测试开始!'
toby=Person('toby Huang')
toby.sayHi()
toby.howMany()

jimmy=Person('jimmy Huang')
jimmy.sayHi()
jimmy.howMany()

toby.sayHi()
toby.howMany()

这是我写的一段测试学习代码。报错如下:
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    import ObjVarTest.py
  File "ObjVarTest.py", line 29, in <module>
    toby=Person('toby Huang')
TypeError: this constructor takes no arguments

下面是正确的代码:
# -*- coding: UTF-8 -*-
class Person:
    '''Represents a person'''
    population=0
    def __init__(self,name):
        self.name=name
        print '初始化参数 %s'%self.name
        Person.population+=1
    def __del__(self):
        '''I am dying'''
        print '%s says Bye'%self.name
        Person.population-=1
        if Person.population==0:
            print ' I am the last one'
        else:
            print 'There are still %d people leftl'%Person.population
    def sayHi(self):
        '''Greeting by the people.

        Really,that's all it does.'''
        print 'Hi,My name is %s'%self.name
    def howMany(self):
        '''print the current population'''
        if Person.population==1:
            print 'I am the only one person here'
        else:
            print 'We have %d persons here'%Person.population
print '测试开始!'
toby=Person('toby Huang')
toby.sayHi()
toby.howMany()

jimmy=Person('jimmy Huang')
jimmy.sayHi()
jimmy.howMany()

toby.sayHi()
toby.howMany()

是不是一眼没看出有什么不一样?
开始的时候我也是快读浏览了下,然后就直接开始写了。知道运行时报错,都一直找不到错在哪?直到写这篇博客前,才发现错误!
其实这真是一个低级错误,原来不是_inti_方法,应该是__init__方法!我少打了一个_。
这都是快速浏览带来的恶果啊,就因为这简单错误害我两天都不爽。
还是那句话:Devil in the details