面向对象:
- 对象(实例)
– 由数据及能对其实施的操作所构成的封装体
(例如猫亚科动物中的美短、英短、苏格兰折耳猫、波斯猫、暹罗猫、布偶猫等) - 类
– 类描述了对象的特征,一个模板
(例如猫亚科动物,都有特征:三角耳,圆眼睛,擅长爬树,喜欢鱼)
面向对象之抽象:
对话框可作为一个类,具体每个对象之间:
- 相同点:
– 有名字
– 有矩形框
– 鼠标点击时有效果 - 不同点
– 功能不同:刷新、退出
类的定义
class ClassName(object):#类名(父类),obect--万类之源
'define ClassName class' #说明文档
class_suite #类体代码
定义一个空类,即定义一个namespace:
class MyData(object):
'this is a very simple example class' #说明文档
pass #类体代码
类的方法定义,需要每个方法的声明第一个参数是self,表明调用这个方法的对象本身,在调用时不需要实参与之对应。
实例的创建—通过调用类的对象:
1. 定义类 — Dog
2. 创建一个实例 — dog
3. 通过实例使用或属性方法 — dog.greet()
class Dog(Object):
def greet(self):
print('Hi!')
#实例名.方法()来调用
dog = Dog()
dog.greet()
实例属性(Instance Attributes)
class Dog(object):
"define Dog class"
def setName(self,name):
self.name = name #dog.name() = "Snowball"
def greet(self):
print("Hi, I am called %s."%self.name)
if __name__ == '__main__':
dog = Dog()
dog.setName("Snowball")
dog.greet()
对象的初始化方法 __ init __ ()
- 当类被调用后,Python将创建实例对象
- 创建完对象以后,Python自动调用第一个方法为__ init __()
- 实例对象作为方法的第一个参数(self被传递进去,调用类创建实例对象时的参数都传给 __ init __ ()
#_init_举例
class Dog(object):
"define Dog class"
def __init__(self, name):
self.name = name
def greet(self):
print("Hi, I am called %s."%self.name)
if __name__ == '__main__':
dog = Dog("Snowball")
dog.greet()
类属性(Class Attributes)
- 类的数据属性(静态成员)
– 仅仅是所定义的类的变量 - 在类创建后被使用
- 可以由类中的方法来更新,也可以在主程序中更新
- 类属性和实例无关,修改类属性需要使用类名
class Dog(object):
"define Dog class"
counter = 0
def __init__(self, name):
self.name = name
Dog.counter += 1
def greet(self):
print("Hi, I am %s, my number is %d"%(self.name, Dog.counter))
if __name__ == '__main__':
dog = Dog("Snowball")
dog.greet()