一.类的属性和方法:
1.Python的命名规范
- 模块名:
Python的文件称作模块(Module
),模块名称用小写字母表示,多个单词之间用_
隔开,如:my_python.py
。 - 类名:
首字母大写:MyClass
- 方法名:
如:get_data()
- 私有方法:
以下划线开头,如:_get_name()
- 变量
小写,用_
隔开。如:my_var
- 全局变量:
全部大写,如:TITLE
2.创建类的示例
class Dog(object):
'''
关于“狗”的类
'''
def __init__(self, name, age):
'''
构造函数
'''
self.name = name
self.age = age
def sit(self):
'''
坐下方法
'''
print(self.name + '坐下')
def bark(self):
'''
狗叫方法
'''
print(self.name + '正在叫')
my_dog=Dog('小狗', 3)
my_dog.bark()
my_dog.sit()
输出:
小狗正在叫
小狗坐下
注意:在类中写调用代码时,一定要顶头写,不要缩进。因为住有缩进的代码,是属于Dog
类中的方法,在类初始化的时候会被执行到。顶头写的代码,是跟Dog
类平级的代码。
3. 初始化类的属性值
在构造函数中,可以为类的属性设置默认值。
def __init__(self, name, age):
'''
构造函数
'''
self.name = name
self.age = age
#设置默认值
self.weight = 0
在方法中调用这个默认值:
def get_weight(self):
print(self.name+'的体重是:'+str(self.weight))
二.继承
继承使得子类可以使用父类的属性和方法。
1.继承的实现示例
父类:
class Dog(object):
'''
关于“狗”的类
'''
def __init__(self, name, age):
'''
构造函数
'''
self.name = name
self.age = age
self.weight = 0
def sit(self):
'''
坐下方法
'''
print(self.name + '坐下')
def bark(self):
'''
狗叫
'''
print(self.name + '正在叫')
def get_weight(self):
print(self.name + '的体重是:' + str(self.weight))
子类:
class SpottedDog(Dog):
def __init__(self,name,age):
''' Python2.7版以上用下面的方法'''
#super(SpottedDog,self).__init__(name,age)
super().__init__(name,age)
self.skin = 'spot'
def show_Dog(self):
''' 调用父类的属性'''
print(self.name+'的皮肤是'+self.skin+',年龄是'+str(self.age)+',体重是'+str(self.weight))
''' 重写父类方法 '''
def bark(self):
print(self.name+'汪汪叫~')
spotedDog = SpottedDog('斑点狗',2)
spotedDog.show_Dog()
'''调用父类的方法'''
spotedDog.bark()
输出:
斑点狗的皮肤是spot,年龄是2,体重是0
斑点狗汪汪叫~
2.如何继承:
- 通过
class SpottedDog(Dog):
传入父类的类名 - 通过
super()
方法完成子类和父类的关联
注:Python2.7版以上用super(SpottedDog,self).__init__(name,age)
,第一参数是子类类名,第二个参数时子类对象。
3.父类方法的重写
当父类的方法不满足子类模拟实物行为的时候,可以对其重写,来满足需求。
如何重写方法?
- 方法名必须和父类中的一致
- 方法体中的内容可以重新修改
重写父类bark()
方法示例:
def bark(self):
print(self.name+'汪汪叫~')
三.导入类
注:如果在Eclipse中导入任何类都报错的时候,需要在该项目属性中配置PyDev
中的
1.在别的模块中导入单个类
示例:在my_dog.py
中导入dog.py
中的类:
form dog import Dog
'''使用引入的类'''
my_dog = Dog('看门狗','4')
2.在别的模块中导入多个类
示例:在my_dog.py
中导入dog.py
中的Dog
类和SpottedDog
类:
form dog import Dog , SpottedDog
3.导入整个模块
示例:在my_dog.py
中导入dog.py
:
import dog
my_dog = dog.Dog('看门狗','5')
4.导入模块中的所有类
注:尽量不用此种方式
示例:在my_dog.py
中导入dog.py
:
form dog import *
my_dog = dog.Dog('看门狗','6')