# 属性(在python中叫做变量) 人类的皮肤颜色,2只手等等
# 行为(在python中叫做方法) 人类走路,吃饭
# 对象:根据人类创建的实例就叫做对象
#用class来定义一个类 类名用大写Person
#类名后面有括号加object表示新式类 继承object类 object是基类 一切类的父类
#类名后面没有括号为经典类 class Person:
class Person(object):
hand = 2 #定义一个类变量
#这个叫做默认的构造函数 init方法用来初始化和用来创建对象用的 双下划线表示私有的
def __init__(self,name,age): #self是实例或对象本身
self.name = name #name是形式参数 把name的值赋值给实例变量
self.__age = age
def shopping(self): #实例方法
print self.name + '去购物'
#这个@符号在python中叫做装饰器,静态方法只会在内存当中保存一份
#场景:用python连接数据库返回连接对象等等就会用到静态方法
#装饰器的作业是用于在不改变原有代码的基础上给代码增加的新的功能
@staticmethod
def work():
print '我是一个静态方法'
#这是一个类方法
@classmethod
def study(cls):
print '我是一个类方法'
def __fun1(self):
print '我是一个私有方法'
#调用私有方法的时候先创建一个实例方法然后把私有方法返回
def fun2(self):
return self.__fun1()
def fun3(self): #创建一个实例方法返回私有变量
return self.__age
#创建对象 根据类创建对象的过程叫做实例化
p = Person('钟多',16) #创建一个对象p 这个p就是钟多
# p.shopping() #对象调用实例方法
#1.类和对象调用类变量和实例变量
print Person.hand #类调用类变量
print Person.name #类调用实例变量 实例变量是实例独有的属性
#会报错AttributeError: type object 'Person' has no attribute 'name'
print p.hand #对象调用类变量
print p.name #对象调用实例变量
#2.类和对象调用实例方法,静态方法,类方法
Person.shopping(p) #类调用实例方法必须要有入参这个参数为具体的实例本身
# TypeError: unbound method shopping() must be called with
# Person instance as first argument (got nothing instead)
Person.work() #类调用静态方法
Person.study() #类调用类方法
p.shopping() #对象调用实例方法
p.work() #对象调用静态方法
p.study() #对象调用类方法
#3.类和对象调用私有方法
Person.fun2(p) #类调用私有方法
p.fun2() #对象调用私有方法
print Person.fun3(p) #类调用私有变量
print p.fun3() #对象调用私有变量
#类的三大特性
# 1.多态
# class Animal:
#
# def __init__(self):
# pass
#
# def eat(self,x,y):
# return x + y
#
# dog = Animal()
# print dog.eat(1,2)
# print dog.eat('骨头','肉')
#2.封装
# class A(object):
# def __init__(self):
# pass
#
# def setName(self,name): #通过setName方法设置名字
# self.name = name
#
# def getName(self): #通过getName来获取名字
# return self.name
#
# a = A()
# a.setName('小王')
# print a.getName()
#3.继承
# class Father(object):
#
# def __init__(self):
# pass
#
# def cars(self):
# print '喜欢车'
#
# def money(self):
# print '有钱'
#
# def woman(self):
# print '喜欢美女'
#
# class Son(Father): #Son子类继承父类Father
#
# def __int__(self):
# super(Father).__init__(Son) #继承父类的构造函数
#
# def drink(self):
# print '爱喝酒'
#
# def head(self):
# print '烫头'
#
# s = Son() #创建一个子类的对象
# s.woman()
# s.money()
# s.drink()
# s.head() |
|