Python 2.7 在init函数python中调用方法

Python 2.7 在init函数python中调用方法,python-2.7,init,Python 2.7,Init,我对此代码有问题: import math class Money(object): def __init__(self, salary): self.salary = salary sal(self.salary) def sal(self, x): y = ( x - ( ( (x * 0.22) + 6534) ) - (1900.9408 + ( (x - 37568)*.077) ) ) print

我对此代码有问题:

import math

class Money(object):

    def __init__(self, salary):
        self.salary = salary
        sal(self.salary)

    def sal(self, x):
        y = ( x - ( ( (x * 0.22) + 6534) ) -  (1900.9408 + ( (x - 37568)*.077) ) )
        print '-----------------------------------------------------------'
        print 'monthly income before tax will be: ${0:.2f}' .format(x/12)
        print 'bi-weekly income before tax will be: ${0:.2f}' .format(x/24)
        print 'Hourly after tax: ${0:.2f}' .format(x/24/70)
        print '-----------------------------------------------------------'
        print 'Income after tax will be: ${0:.2f}' .format(y)
        print 'Monthly after tax: ${0:.2f}' .format((y/12))
        print 'bi-weekly after tax:  ${0:.2f}' .format((y/24))
        print 'Hourly after tax: ${0:.2f}' .format(y/24/70)


        answer = raw_input('Do you want to do this again?\nType [Y] or [N]: ')
        if( answer == 'Y'):
            sal(x)
        else:
            print 'Thank you!'
            return


def main():

    x = input('Enter your taxable income: ')
    salaryLister = Money(x)

main()
回溯显示:

Traceback (most recent call last):
  File "taxableincome.py", line 35, in <module>
    main()
  File "taxableincome.py", line 33, in main
    salaryLister = Money(x)
  File "taxableincome.py", line 7, in __init__
    sal(self.salary)
NameError: global name 'sal' is not defined
回溯(最近一次呼叫最后一次):
文件“taxableincome.py”,第35行,在
main()
文件“taxableincome.py”,第33行,主目录
salaryLister=货币(x)
文件“taxableincome.py”,第7行,在_init中__
sal(自我薪酬)
NameError:未定义全局名称“sal”
什么是: 全局名称“sal”未定义是什么意思


请随时对我的设计发表意见。我很想学习。

使用
self.sal
,这就是在python中调用类的实例方法的方式

这在python中的工作原理是,如果您查看您拥有的方法签名

def sal(self, salary)
基本上,它需要类引用作为第一个变量。在python中,当您执行
self.sal
时,它会转换为

Money.sal(self, salary)
您也可以这样调用该方法,但推荐的方法是

self.sal(salary)
根据对代码的评论,肯定没有任何明显的危险信号。尽管sal函数中的最后一个
return
语句不是必需的。把它放在那里不是问题,只是吸引了我的眼球

既然你问了,我想指出这一点。请尽量遵守编码标准。让它成为你自己的或别人的。重要的是一致性。但是PEP-8是python普遍接受的风格。你甚至可以为你的编辑器提供插件,帮助你坚持下去。您可能需要阅读链接的样式指南