python中有关类编写过程中应该主要的一些问题
2011-12-02 15:54
381 查看
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)
在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)
相关文章推荐
- python中有关类编写过程中应该主要的一些问题
- 分享一点在用Qt编写计算器的过程中所遇到的问题(主要是信号和槽的问题)大神们就没必要看了,都是一些小白摸爬打滚的经验
- 在编写SQL语句时应该注意的一些小问题;
- 一个新手学习python的过程中遇到的一些问题及解决方法
- 给IIC芯片AT24CXXX编写驱动的过程中出现的一些不稳定的问题总结
- 做产品过程当中应该注意的一些问题
- Python爬虫(图片)编写过程中遇到的问题
- SEO过程中应该避免的一些问题
- 安装python caffe过程中遇到的一些问题以及对应的解决方案
- 编写DLL过程中遇到的一些问题
- Python中文编码过程中遇到的一些问题
- 电路设计中有关可靠性抗干扰等一些应该注意的问题
- python与c++混编过程中遇到的一些问题
- 对Python新手编程过程中如何规避一些常见问题的建议
- 从MPG切割,合并到转换成FLV视频过程中可能遇到的一些问题(主要用到mencoder ffmpeg flvtool2)
- 有关献血过程中的一些问题
- Python数据提取过程中遇到的一些问题
- ubuntun16.04 +cuda8.0+cudnn5+opencv2.3+python+caffe安装过程中出现的一些问题
- 数据恢复过程中应该注意的一些问题
- 学python过程中遇到的一些问题及解决方法