当前位置:首页 » 编程语言 » python子类

python子类

发布时间: 2022-01-11 10:12:04

python一个类可以有两个子类吗

class subclass(superclass1,superclass2):

一个子类当然可以继承多个超类,以上表示定义一个subclass类,从类superclass1,superclass2继承

比如下面的代码子类C就继承了A和B类

class A:
def __init__(self):
self.one="one"
class B:
def __init__(self):
self.two="two"

class C(A,B):
def __init__(self):
A.__init__(self)
B.__init__(self)
def printselfnum(self):
print(self.one,self.two)
c=C()
c.printselfnum()

② 请问python如何将一个子类对象赋值给父类对象

classF:
def__init__(self):
pass
deffun(self):
print"InF"

classS(F):
def__init__(self):
F.__init()
deffun(self):
print"InS"

f=S()
f.fun()

python本来就是动态类型的语言,所以本来就不需要像C#那样的赋值,像上面的代码即可以实现C#里面的功能。

③ Python子类与父类的关系问题

  1. 不如贴代码

  2. 可以去看下 MRO 的东西, 以及类/实例的属性和__dict__的关系

  3. 属性是怎么查找的, getattr, __getattr__, __getattribute__ 这几个是怎么运行的...


另外你这个 method 是什么我真的没懂... 什么叫 A类的类名...

④ python 子类怎么调用父类方法

两种方法解决:
- 第一种

class A:
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#这一行解决了问题
A.__init__(self)
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第二种:
#父类需要继承object对象
class A(object):
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#这一行解决问题
super(B,self).__init__()
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PS:让类A继承自object类,这样才能使用super函数,因为这是python的“新式类”支持的特性。当前的class和对象可以作为super函数的参数使用,调用函数返回的对象的任何方法都是调用超类的方法,而不是当前类的方法。

优劣:
- 方法一更直观,方法二可以一次初始化所有超类
- super函数比在超类中直接调用未绑定方法更直观,但是其最大的优点是如果子类继承了多个父类,它只需要使用一次super函数就可以。然而如果没有这个需求,直接使用A.init(self)更直观一些。

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

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

deffunc():
a=1
b=2

a=func()
print(a)

>>>None

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

⑥ python 查看类有哪些子类

递归获取某一父类的所有子类

all_subclasses={'0':'0'}
defget_all_classes(model):
"""
获取父类的所有子类
"""
forsubclassinmodel.__subclasses__():
#print(subclass._meta.abstract)
if(not(subclass.__name__)inall_subclasses.keys())and(notsubclass._meta.abstract):
all_subclasses[subclass.__name__]=subclass
get_all_classes(subclass)
returnall_subclasses

这里主要用到了__subclasses__() 这个方法,这个方法返回的是这个类的子类的集合,用递归的方法,去获取传入类型的所有子类。返回给全局变量 all_subclasses这个字典集合。

⑦ python 如何调用子类中的方法呢

别人的是多态,也就是大家都从一个接口继承,然后子类对象可以当父类用,你这个父类都不知道谁继承了它,怎么调用子类方法?你这个思路不太对劲的。

⑧ Python中超类和子类有什么区别

classa:
pass
classb(a):
pass

b类从a类继承而来,a就是超类,b就是子类,b类可以使用a类定义的方法,也可以在a类的基础上定义新的方法,a是基础类,b是a的扩展

⑨ Python子类继承,如果不用父类的函数和方法,应该怎么写

子类继承父类时,如果父类有需要初始化的属性,那么必须在子类中调用父类的初始化方法,帮助父类进行初始化,否则,子类可以不调用父类的初始化方法

代码示例

"""
父类Car中没有属性需要初始化,所有子类中也不需要调用父类的初始化方法
"""


classCar:

defshow_name(self):
print('carname')


classEeleCar(Car):
pass


car=EeleCar()
car.show_name()

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

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) #2 super().method(arg) #3 1.直接写类名调用 2.用 super(type, obj).method(arg)方法调用。 3.在类定义中调用本类的父类方法,可以直接 super().method(arg). 在代码中调用对象的父类的方法的示例: ob = B() super(B,ob).method(arg) #调用class B的父类class A的method。

热点内容
单片机android 发布:2024-09-20 09:07:24 浏览:763
如何提高三星a7安卓版本 发布:2024-09-20 08:42:35 浏览:662
如何更换服务器网站 发布:2024-09-20 08:42:34 浏览:309
子弹算法 发布:2024-09-20 08:41:55 浏览:287
手机版网易我的世界服务器推荐 发布:2024-09-20 08:41:52 浏览:815
安卓x7怎么边打游戏边看视频 发布:2024-09-20 08:41:52 浏览:160
sql数据库安全 发布:2024-09-20 08:31:32 浏览:91
苹果连接id服务器出错是怎么回事 发布:2024-09-20 08:01:07 浏览:505
编程键是什么 发布:2024-09-20 07:52:47 浏览:655
学考密码重置要求的证件是什么 发布:2024-09-20 07:19:46 浏览:479