莫愁前路无知己,天下谁人不识君。。。。

python 小知识3--------构造函数简要

上一篇 / 下一篇  2017-10-27 10:46:44 / 个人分类:python 小编程

# 关于构造函数(基础应用)
# coding:utf-8
class ca:
    def __init__(self, v):
        self.name = v
    def pre(self):
        print 'a---->', self.name
A = ca('xiao')
A.pre()    # a----> xiao
ca.pre(A)  # a----> xiao  加print 会打印出None
再如:
class A(object):
    def __init__(self, name):
        self.name = name
    def getName(self):
        return 'A '+self.name
class B(A):
    def getName(self):
        return 'B '+self.name
class C(A):   显式的调用超类的__init__方法
    def __init__(self,name):
        super(C, self).__init__(name)
    def getName(self):
        return 'C '+self.name
若改成下面这样会报错:
class C(A):
    def __init__(self):
        pass
    def getName(self):
        return 'C '+self.name
#不会隐式的再去调用超类中已定义的__init__
if __name__=='__main__':
    a = A('hello')
    print a.getName()
    b = B('hello')
    print b.getName()
    c = C('hello')
    print c.getName()
说明:
__init__()是为了做初始化用的
我们初始化得时候不一定要使用__init__()进行初始化,可以直接定义
比如
class test(self):
test_a = "123"
这里就初始化了一个变量test_a = "123",但这样就太固定
而__init__()的好处在于它可以接收参数并初始化
__init__(self,testa):
test_a = testa
这样类就可以初始化话一个动态的变量,更加灵活
而且直接test("123")就将test_a 初始成123了

# C.py
class a():
  def a1(self):
    return a11+a22
# D.py
class b():
  def b1(self):
    return b11+b22
在D中引用C的方法:
import a
x = a().b1()

TAG: 构造函数引用

 

评分:0

我来说两句

Open Toolbar