Python子类调用父类方法或子类定义的方法输出会多出个'None'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python子类调用父类方法或子类定义的方法输出会多出个'None'相关的知识,希望对你有一定的参考价值。

Python子类调用父类方法或子类定义的方法,为什么每次打印出来都会多一个None,要怎么修改?

这是类的继承问题。先说一下,对于python来说定义函数要用def来定义,没有这个关键字无法定义函数。
然后通常,如果父类中有调用self.a,那么这个就是类的属性,也就是说,子类中自然存在。直接在子类中直接调用即可,如果在父类中只定义了一个局部变量,那么子类是获取不到的。不过可以定义类方法,直接调用类方法获取你想要的值。
方法1.
class A: def get_A(self): self.a=1 print(self.a)class B(A): def get_B(self):#self不是python关键字,建议类方法用self作为第一个参数 self.get_A()if __name__ == \'__main__\':b = B()b.get_B()
参考技术A

我觉得最佳的回答的是不对的, 在python中若是函数没有定义return的结果,则会默认返回一个none 

def func():
    a = 1
    b = 2

a = func()
print(a)

>>> None

在官方文档中也有说明的, 而你打印出none的原因就是因为你在类的方法
中直接打印了字符串没有返回值, 将方法中的pring改成return即可

参考技术B 使用print(my.describe_restaurant())会多输出一个None,是因为在def my.describe_restaurant(self):函数中,用了print,
def my.describe_restaurant(self):
print('The cuisine type of'+self.restaurant_name + 'is' + self.cuisine_type)
所以print(my.describe_restaurant())==print(print('The cuisine type of'+self.restaurant_name + 'is' + self.cuisine_type)),
所以输出多一个None,可以改成如下两种方法都行
1.print(my.describe_restaurant())改成直接调用my.describe_restaurant()
2.def my.describe_restaurant(self):
return 'The cuisine type of'+self.restaurant_name + 'is' + self.cuisine_type
print改成return

Python中子类怎样调用父类方法

参考技术A 你好,请看下面的例子和说明:python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类,就要在这个函数里显式调用一下父类的__init__(),这跟C++,jAVA不一样,他们是自动调用父类初始化函数的。调用父类函数有以下方法:class A:def method(self, arg):pass
class B(A):def method(self, arg):# A.method(self,arg) # 1# super(B, self).method(arg) #2super().method(arg) #31.直接写类名调用2.用super(type,obj).method(arg)方法调用。3.在类定义中调用本类的父类方法,可以直接super().method(arg).在代码中调用对象的父类的方法的示例:ob = B()super(B,ob).method(arg) #调用class B的父类class A的method。初始化中调用父类初始化方法示例:class B(A):

以上是关于Python子类调用父类方法或子类定义的方法输出会多出个'None'的主要内容,如果未能解决你的问题,请参考以下文章

Python中子类怎样调用父类方法

python 继承

在JAVA中,子类继承父类,父类可以调用子类继承父类的方法,父类为啥不能调用子类自己定义的方法呢

python - 构造函数

08多态

子类为啥不能直接调用父类的属性