object类是所有类的根类。
类成员分为成员变量(attribute)、成员方法和属性(property)。
成员变量(attribute):类变量、实例变量。
成员方法:类方法、静态方法、实例方法。
class Accout:
"""定义银行账户类"""
interest_rate = 0.0668 #类变量利率
def __init__(self, owner, amount):
self.owner = owner #定义实例变量账户名
self.amount = amount #定义实例变量账户余额
#类方法
@classmethod
def interest_by(cls, amt):
return cls.inerest_rate * amt
#静态方法
@staticmethod
def interest_with(amt):
return Accout.inerest_rate * amt
1.类声明
如果父类省略的话,表示直接继承 object 类。
class 类名 [(父类)]:
类体
2.多继承
大部分计算机语言如Java等,只支持单继承,不支持多继承,主要是多继承会发生方法冲突,Python支持多继承,但Python给出了解决方法名字冲突的方案,当子类实例调用一个方法时,先从子类查找,如果没有找到则查找父类,父类的查找顺序是按照子类声明的父类列表从左到右查找,如果没有找到则查找父类的父类,依次查找下去。
class DerivedClassName(Base1, Base2, Base3):
<statement-1>
.
.
.
<statement-N>
3.构造方法
def __init__(self,owner,amount):
self.owner = owner
self.amount = amount
self是对当前实例的引用,定义构造方法的第一个参数应该是self,其后的参数才是用来初始化实例变量的。之所以第一个参数是self,目的是将当前实例与该方法绑定,使该方法成为构造方法或实例方法。
4.创建对象
变量 = 类名()
实例.实例变量
实例.实例方法
类.类变量
类.类方法
5.重写(override)
如果子类方法名与父类方法名相同,而且参数列表也相同,只是方法体不同,那么子类会重写(override)父类的方法。
class Animal(object):
def __init__(self, age, sex=1, weight=0.0):
self.age = age
self.sex = sex
self.__weight = weight
def eat(self):
self.weight += 0.05
print('动物吃...')
class Dog(Animal):
def eat(self):
self.weight += 0.1
print('狗狗吃...')
a1 = Dog(2, 0, 10.0)
a1.eat()
输出结果如下:
狗狗吃...
6.多态
发生多态需两个前提条件:第一,继承——多态发生在子类和父类之间;第二,重写——子类重写了父类的方法。
#几何图形
class Figure:
def draw(self):
print('绘制Figure...')
#椭图形
class Ellipse(Figure):
def draw(self):
print('绘制Ellipse...')
#三角形
class Triangle(Figure):
def draw(self):
print('绘制Triangle...')
f1 = Figure()
f1.draw() #未发生多态
f2 = Ellipse()
f2.draw() #发生多态
f3 = Triangle()
f3.draw() #发生多态
输出结果:
绘制Figure...
绘制Ellipse...
绘制Triangle...
7.属性(property)
属性的发明是为了解决setter和getter代码麻烦的问题。在方法前面加上@property装饰符,会把方法名会变成属性名。先定义getter访问器,再定义setter访问器。
class Animal(object):
def __init__(self, age, sex=1, weight=0.0):
self.age = age
self.sex = sex
self.__weight = weight
@property
def weight(self): #替代get_weight(self):
return self.__weight
@weight.setter
def weight(self, weight): #替代set_weight(self, weight):
self.__weight = weight
a1 = Animal(2, 0, 10.0)
print('a1体重:{0:0.2f}'.format(a1.weight))
a1.weight = 123.45 #a1.set_weight(123.45)
print('a1体重:{0:0.2f}'.format(a1.weight))
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/python/pythonlang/2719.html