python中有关类编写过程中应该主要的一些问题

 

1、注意__init__ 的写法

在python中我们如果要创建一个类,class则我们必须有个初始化函数__init__ ,但向我这种初学者一样常常要搞错该函数的名字。

__init__ 中 他的下划线是两条下划线而不是一条。

如果写成_init_的话,则会出现错误提示为:this constructor takes no arguments

例子:

class Square:
    def __init__(self, side):
        self.side = side
    def calArea(self):
        return self.side**2
class Circle:
    #note that it is two "_" in the function __init__ ,that is it is "__ "but not" _"
    def __init__(self, r):
        self.r = r
    def calArea(self):
        import math
        return math.pi*(self.r**2)

list = [Circle(5) , Circle(7), Circle(9)]

for shape in list:
    print 'the area is :' , shape.calArea()

当我们在建立一个实例时,初始化的参数,有__init__函数决定。如果__init__(self , para1,para2,...para n)

则创建实例是应该是 m = Circle(para1,para2,...para n)

记住,self函数相当与C中的this 指针,在创建实例中他将被忽略。他由系统调用

2、我们在编写类时,要注意类中的函数其函数声明时,他的形参列表中的第一个必须是self,否则会出错。

如:def printIt(self, para1 ,para2,...para n),

而在函数体的实现中我们可以完成不用到self

如:

class Message:
    def __init__(self,aString):
        self.text = aString
    def printIt(self , str):
        print str

3、类继承的写法

如果Base 是基类,Inherit是继承类,则

class Inherit(Base):

在子类中调用父类的方法是必须加上父类的名称

如:class Base :

              def __init__(self,aString):

                            self.text = aString

              def printIt(self,str)

                      print self.text ,str

      class Inherit(Base):

                 def printIt(self,str):

                        Base.printIt(str)

                        print "ping"

注意:子类中可以不用重新编写__init__函数,而他会直接调用父类的初始化函数初始化。

也可以在子类中自己重新定义__init__函数,并也可以在该函数中调用父类的__init__

class InheritMessage(Message):
    def __init__(self,aString):
        Message.__init__(self, aString)
        print 'helloworld'

3、子类在重写父类方法时,如果调用该父类的该方法,则必须该方法的参数还是要加上self

如:

    class ChargingAccount(BankAccount):
        def __init__(self,initAccount):
            BankAccount.__init__(self, initAccount)
            self.fee = 3
        def withdraw(self,amount):
            BankAccount.withdraw(self,amout + self.fee)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值