在python中从其他文件调用方法会导致执行整个python fi

2024-09-28 23:12:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python编程新手。我已经以流的形式编写了示例代码

温度py

p = 'Tushar'
print(p)

class Basics:

    def __init__(self, name, phNum):
        self.name = name
        self.phNum = phNum

    def getString(self):
        temp = self.name+' '+str(self.phNum)
        print(type(temp))
        return temp

bs = Basics("tushar", 9620207652)
x = bs.getString()

print(x)

def isBlue(isBlue):
    if(isBlue):
        print('Boolean true')
        x = 'true'
    else:
        print('Boolean false')
        x = 'false'
    return x

tus = isBlue(True)
if(tus != None):
    str = bs.getString().split(' ',1)
    print(str[0])
    print(str[1])

你好,派瑞

from temp import Basics

class Check:

    def __init__(self):
        print('Check obj')

    def createName(self, firstName, lastName):
        str = firstName + ' ' + lastName
        return str

emp = Check()
completeName = emp.createName('Tushar', 'Banne')
print(completeName)

b = Basics('Tushar', 98765432)
val = b.getString
print("Val is {}".format(val))

我正在运行Hello.py文件并获得以下输出

Tushar

class 'str'

tushar 9620207652

Boolean true

class 'str'

tushar 9620207652

Check obj

Tushar Banne

Val is (bound method Basics.getString of 0x0000024ECCCB5B70

我的问题如下

  1. 为什么要执行整个临时程序

  2. 如何只执行getString方法

  3. 为什么当我在getString之后使用括号时,它失败了

  4. 为什么val打印对象引用

  5. 我是否遵循了正确的python编码标准


Tags: nameselfreturnbsdefchecktempclass
2条回答

Why is the entire temp.py getting executed?

这就是它的工作原理。导入模块实际上意味着执行它

How to execute only getString method.

为了做到这一点,temp.py中的代码必须以这样一种方式进行更改,即只有当模块在最高级别(“作为__main__模块”)而不是导入时才执行它

您可以这样做:

if __name__ == '__main__':
    p = 'Tushar'
    print(p)

class Basics:

    def __init__(self, name, phNum):
        self.name = name
        self.phNum = phNum

    def getString(self):
        temp = self.name+' '+str(self.phNum)
        print(type(temp))
        return temp

if __name__ == '__main__':
    bs = Basics("tushar", 9620207652)
    x = bs.getString()
    print(x)

def isBlue(isBlue):
    if(isBlue):
        print('Boolean true')
        x = 'true'
    else:
        print('Boolean false')
        x = 'false'
    return x

if __name__ == '__main__':
    tus = isBlue(True)
    if(tus != None):
        str = bs.getString().split(' ',1)
        print(str[0])
        print(str[1])

Why is it that when I use parenthesis after getString, it fails.

我看你的问题没有失败

Why is the val printing object reference?

因为是你要求的。引用方法或函数意味着将其视为对象并打印其字符串表示形式。如果调用它(后面有()),则执行函数调用

首先,看看这个What does if __name__ == "__main__": do?

导入python文件时,将执行所有代码

  1. 失败是什么意思,错误是什么
  2. val = b.getString意味着现在val引用方法getString,这就是它被打印的原因

  3. 不,请阅读上面的链接,另外,python使用snake\u case,而不是camelCase,因此调用方法get\u string,而不是getString(这显然不会改变

相关问题 更多 >