Python 类函数返回';无';

Python 类函数返回';无';,python,oop,Python,Oop,我试图学习python中面向对象的类继承。下面的代码实现了到目前为止我希望它实现的功能,但是在调用父类中的函数时,在打印管道数据之后,返回None。起初我没有返回print语句的函数,所以我添加了return关键字,但这并没有解决这个问题。我知道这一定是我忽略了的退货问题。任何帮助都将不胜感激 import numpy as np class piping: def __init__(self, diameter, length): self.d = diameter

我试图学习python中面向对象的类继承。下面的代码实现了到目前为止我希望它实现的功能,但是在调用父类中的函数时,在打印管道数据之后,返回None。起初我没有返回print语句的函数,所以我添加了return关键字,但这并没有解决这个问题。我知道这一定是我忽略了的退货问题。任何帮助都将不胜感激

import numpy as np


class piping:
    def __init__(self, diameter, length):
        self.d = diameter
        self.len = length

    def getPipeData(self):
        return print('The pipe length is %.1fm, and the diameter is %.1fm.' % (self.len, self.d))


class hydrodynamics(piping):
    def __init__(self, diameter, length, fluid, density):
        super().__init__(diameter, length)
        self.fluid = fluid
        self.density = density

        self.volume = self.getVolume()

    def getVolume(self):
        return np.pi*self.d**2/4


sec1 = hydrodynamics(1, 10, 'water', 1000)
sec2 = hydrodynamics(0.5, 30, 'water', 1000)

print(sec1.getPipeData())
print(sec2.getPipeData())
print(sec1.volume)
print(sec2.volume)
这就是被退回的东西…(正如我所说的,到目前为止一切都很好,只是我对退货无异议)

我期望的结果是:

The pipe length is 10.0m, and the diameter is 1.0m.
The pipe length is 30.0m, and the diameter is 0.5m.
0.7853981633974483
0.19634954084936207

您应该在
getPipeData
的定义中省略
print
语句,只返回字符串

或:


调用
sec1.getPipeData()
时不使用
print
,因为调用
sec1.getPipeData()

时将执行
print
,因此在
getPipeData
的定义中应该省略
print
语句,只返回字符串

或:


调用
sec1.getPipeData()
而不使用
print
,因为调用
sec1.getPipeData()

时将执行
print
,如果这确实是您希望从程序中得到的,则可以将调用代码更改为:

sec1.getPipeData()
sec2.getPipeData()
print(sec1.volume)
print(sec2.volume)
但是,最好不要打印成员函数中的任何内容。如果您将等级更改为以下等级,您可以保持驾驶代码不变

class piping:
    def __init__(self, diameter, length):
        self.d = diameter
        self.len = length

    def getPipeData(self):
        return 'The pipe length is %.1fm, and the diameter is %.1fm.' % (self.len, self.d)

如果这确实是您希望从程序中得到的,那么您可以将调用代码更改为:

sec1.getPipeData()
sec2.getPipeData()
print(sec1.volume)
print(sec2.volume)
但是,最好不要打印成员函数中的任何内容。如果您将等级更改为以下等级,您可以保持驾驶代码不变

class piping:
    def __init__(self, diameter, length):
        self.d = diameter
        self.len = length

    def getPipeData(self):
        return 'The pipe length is %.1fm, and the diameter is %.1fm.' % (self.len, self.d)

print
返回
None
,你还期望它返回什么?@UnholySheep,你是什么意思?“getPipeData”返回的“print”语句将始终返回“None”?请使用您的代码所需的输出更新您的问题。
print()
的返回值始终为
None
。您正在从
getPipeData()
@quamrana返回此
None
,我现在明白了!我需要在代码末尾调用函数,而不是打印函数。谢谢
print
返回
None
,你还期望它返回什么?@UnholySheep,你是什么意思?“getPipeData”返回的“print”语句将始终返回“None”?请使用您的代码所需的输出更新您的问题。
print()
的返回值始终为
None
。您正在从
getPipeData()
@quamrana返回此
None
,我现在明白了!我需要在代码末尾调用函数,而不是打印函数。谢谢谢谢大家!@夸姆拉纳上面的评论让我明白了这一点。我真的很感谢你的帮助!谢谢大家!@夸姆拉纳上面的评论让我明白了这一点。我真的很感谢你的帮助!非常感谢。你上面的评论让我明白了这一点。我真的很感谢你的帮助!此外,这正是我将代码更改为的内容。另外,感谢您提醒我需要包括我的预期输出。下次我有问题的时候,我一定会第一次问。谢谢!你上面的评论让我明白了这一点。我真的很感谢你的帮助!此外,这正是我将代码更改为的内容。另外,感谢您提醒我需要包括我的预期输出。下次我有问题的时候,我一定会第一次问。