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

python父类

发布时间: 2022-01-08 15:33:16

A. python子类与父类的关系问题

  1. 不如贴代码

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

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


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

B. 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)更直观一些。

C. 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。

D. python 中怎样调用父类方法

子类调用父类函数有以下方法:
直接写类名调用
用 super(type, obj).method(arg)方法调用。
在类定义中调用本类的父类方法,可以直接用super().method(arg)

1
2
3
4
5
6
7
8
9

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

E. python 如何调用父类 的父类 的方法

F. Python 子类继承父类的问题

  1. 如果我没有理解错你的问题的话,答案是不会的.子类一样可以写自己的__init__函数.请看:

  2. '''
    1.继承有什么好处?最大的好处是子类获得了父类的全部功能。
    2.当然,也可以对子类增加一些方法.
    3.当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。
    '''
    classAnimal(object):#父类
    def__init__(self,name):
    self.name=name
    defrun(self):
    print('Animalisrunning...')
    defsleep(self):
    print('Animalissleeping...')

    classDog(Animal):#子类
    #初始化父类有两种方式:
    #父类.__init__(self,父类参数)=>Animal.__init__(self,name)
    #super(子类,self).__init__(父类参数)=>super(Dog,self).__init__(name)
    def__init__(self,name,color):
    #Animal.__init__(self,name)
    super(Dog,self).__init__(name)
    self.color=color
    defrun(self):#多态
    print('Dogisrunning...')
    defshow_info(self):
    print('name=',self.name)#继承了父类的属性
    print('color=',self.color)
    self.run()#调用自己的方法

    ab=Dog('Lorry','Red')
    ab.show_info()

G. python2.7怎么查看类或对象的父类

In[1]:classa(list):
...:pass
...:

In[2]:a.__bases__
Out[2]:(list,)

In[3]:a.mro()
Out[3]:[__main__.a,list,object]

In[4]:

如果解决了您的问题请采纳!
如果未解决请继续追问

H. 请问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#里面的功能。

I. python子类调用父类方法出现None

None是tell函数执行的结果, 因为它没有return所以返回值是None
class类名宜采用驼峰结构, 首字母应该大写

热点内容
麦块有什么服务器 发布:2024-12-25 22:12:58 浏览:374
网上比较火的安卓系统是什么 发布:2024-12-25 21:57:06 浏览:993
数据库一个的和 发布:2024-12-25 21:50:40 浏览:465
钙化分析算法 发布:2024-12-25 21:49:51 浏览:462
运用计算法 发布:2024-12-25 21:49:46 浏览:943
微信安装安卓707什么意思 发布:2024-12-25 21:38:15 浏览:882
演示文稿如何取消密码 发布:2024-12-25 21:21:18 浏览:99
最近上传视频 发布:2024-12-25 21:05:39 浏览:396
php招聘源码 发布:2024-12-25 21:05:38 浏览:991
c语言输入数组赋值 发布:2024-12-25 21:01:43 浏览:655