把一个类变成具体的实例化的过程叫做类

实例化:把一个类变成一个具体对象的过程

__init__  构造函数,在实例化时初始化数据

__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

class dog:

    def __init__(self):

        pass

    def res(self,name):
print("%s miao xingren" % name)
def bulk(self,age):
print("%s miao xingren" %age)
a1=dog()
a1.bulk("dddd")
a1.res("dddd")

__del__方法是个析构函数,是用来将实例销毁的函数,做收尾工作,例如关闭数据库等

# #----先去实例里去找,如果没有 再去类里去找
# class Role(object):
# n=123
# name="alex"
# n_list=[]
# def __init__(self, role, weapon, life_value=100, money=15000):
# #self.name = name
#
# self.role = role
#
# self.weapon = weapon
#
# self.__life_value = life_value
#
# self.money = money
#
# def shot(self):
# print("shooting...")
#
# def got_shot(self):
# print (type(self.__life_value))
# self.__life_value -=50
# print("ah...,I got shot...%s"%self.__life_value)
#
# def show_status(self):
# return ("life_val:%s"%self.__life_value)
#
# def buy_gun(self, gun_name):
# print("%s has just bought %s"%(self.name, gun_name) )
# def __del__(self): #析构函数
# pass
# # print("%s 死了"%(self.name))
# r1 = Role('police', 'AK47') #实例化
# r2 = Role( 'terrorist', 'B22') #生成一个角色
# r1.buy_gun("AKR1")
# r1.got_shot()
# print(r1.show_status()) #del r1
#子类继承父类的功能
class people:
def __init__(self,name,age):
self._NAME=name
self._AGE=age
def cry(self):
print ("%s man "%self._NAME)
def sleep(self):
print("%s is sleep"%self._NAME)
class man(people):
def piao(self):
print ("%s is piao..."%self._NAME)
people.sleep(self)
print("%s is sleep"%self._NAME)
class women(people):
def shop(self):
print("%s is shop..."%self._NAME)
M1=man("zhangsan",22)
M1.piao()
M1.sleep()
M2=women("lisi",11)
M2.shop()
# super用法
class people:
def __init__(self,name,age):
self._NAME=name
self._AGE=age
def cry(self):
print ("%s man "%self._NAME)
def sleep(self):
print("%s is sleep"%self._NAME)
class man(people):
def __init__(self,name,age,money):
#people.__init__(self,name,age)
super(man,self).__init__(name,age) ###一般都用这个
self.MOENEY=money
print("%s is money%s"%(self._NAME,self.MOENEY))
def piao(self):
print ("%s is piao..."%self._NAME)
people.sleep(self)
print("%s is sleep"%self._NAME)
class women(people):
def shop(self):
print("%s is shop..."%self._NAME)
M1=man("zhangsan",22,100)
M1.piao()
M1.sleep()
M2=women("lisi",11)
M2.shop()

多态:一种接口 多种形态,多态是接口重用

#-*- coding:utf8 -*-
class school(object):
def __init__(self,name,adree):
self._name=name
self._addree=adree
self.students=[]
self.teachers=[]
self.staffs=[]
def enroll(self,stu_obj):
print("为%s同学办理入学手续"%stu_obj._name)
self.students.append(stu_obj)
def hire(self,staff_obj):
self.staffs.append(staff_obj)
print("为%s 雇佣新员工" % staff_obj._name)
class school_member(object):
def __init__(self,name,age,sex):
self._name=name
self._age=age
self._sex=sex
def tell(self):
print('''
info of is %s
name:%s
age:%s
sex:%s
salary:%s
course:%s
''' % (self._name, self._age, self._sex, self._course, self._salary))
class teacher(school_member):
def __init__(self,name,age,sex,salary,course):
super(teacher,self).__init__(name,age,sex)
self._salary=salary
self._course=course def tell(self):
print('''
-------info of is %s---------
name:%s
age:%s
sex:%s
salary:%s
course:%s '''%(self._name,self._name,self._age,self._sex,self._course,self._salary))
def teach (self):
print("%s is teaching course[%s]"%(self._name,self._course)) class student(school_member):
def __init__(self,name,age,sex,stu_id,grade):
super(student,self).__init__(name,age,sex)
self._stu_id=stu_id
self._grade=grade
def tell(self):
print('''
info of is %s
name:%s
age:%s
sex:%s
stu_id:%s
grade:%s
''' % (self._name,self._name, self._age, self._sex, self._stu_id, self._grade))
def pay_tuition(self,amount):
print("%s jiao le $%s"%(self._name,amount))
t1=teacher("tom",20,"MF",777,"LINUX")
t2=teacher("JONSON",20,"F",7707,"PYTHON")
s1=student("zhangsan",20,"M",1001,"LINUX")
s2=student("lisi",20,"M",1002,"python")
SCHOOL=school("老男孩It","沙河") t2.tell() #显示教师信息
s1.tell() #显示学生信息
s2.pay_tuition(1000)#学生可以教学费
SCHOOL.enroll(s1)#学校为学生注册
SCHOOL.hire(t2)#学校雇佣老师
print(SCHOOL.students)
print(SCHOOL.staffs)
SCHOOL.staffs[0].teach()
for stu in SCHOOL.students:
stu.pay_tuition(5000)
class Animal:
def __init__(self, name): # Constructor of the class self.name = name def talk(self):
pass
class Cat(Animal):
def talk(self):
print('Meow!')
class Dog(Animal):
def talk(self):
print('Woof! Woof!')
d1=Cat("zhangsan")
d1.talk()
d2=Dog("lisi")
d2.talk() #另一种方法
class Animal:
def __init__(self, name): # Constructor of the class self.name = name def talk(self): # Abstract method, defined by convention only #raise NotImplementedError("Subclass must implement abstract method")
pass
@staticmethod
def animal_talk(obj): obj.talk() class Cat(Animal):
def talk(self):
print('Meow!')
class Dog(Animal):
def talk(self):
print('Woof! Woof!')
d1=Cat("zhangsan")
d2=Dog("lisi")
Animal.animal_talk(d1)
Animal.animal_talk(d2)

继承的查找策略(广度优先--python3、深度优先python2)

#-*- coding:utf8 -*-
class A(object):
def __init__(self):
print("A")
class B (A):
def __init__(self):
print("B")
class C (A):
pass
# def __init__(self):
# print("C")
class D(B,C):
pass
# def __init__(self):
#
# print("D")
obj=D() #注意:
#python3中先D-B-C-A
#python2中先D-B-A-C

python day6 面向对象的更多相关文章

  1. (转)Python之路,Day6 - 面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...

  2. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  3. Python的面向对象3

    接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外 ...

  4. Python的面向对象2

    我们接着讲解Python的面向对象 1.初始化实例属性 在现实生活中,一种类型的实例会具有相同的某些属性,把这些实例划分为一个类型,则这些实例必然有相似的部分.但是,在创建实例之后,我们一个一个的为实 ...

  5. Python的面向对象1

    今天,我们来介绍Python的面向对象编程,其实面向对象并不陌生,在C++  ,Java  ,PHP中也有大量使用! 好了,我们来步入正题! 那什么是面向对象编程呢? 1. 面向对象编程是一种程序设计 ...

  6. My way to Python - Day05 - 面向对象-思维导图

    My way to Python - Day05 - 面向对象   思维导图

  7. Python进阶---面向对象的程序设计思想

    Python的面向对象 一.面向过程与面向对象的对比 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  8. Python之面向对象一

    引子 小游戏:人狗大战 角色:人和狗 角色属性:姓名,血量,战斗力和性别(种类) 技能:打/咬 用函数实现人打狗和狗咬人的情形 def Dog(name,blood,aggr,kind): dog = ...

  9. python基础——面向对象进阶下

    python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...

随机推荐

  1. Azure 负载均衡和可用性集

    首先要2台以上的虚拟机,一开始我找了好久都没找到如何在一个云服务里添加多个虚拟机. 因为我使用的是快速创建,快速创建的界面是要新建一个云服务的,如果你输入现有的云服务名字,它会提示你重名了. 你要用[ ...

  2. 避免硬编码你的PostgreSQL数据库密码

    一个密码文件包含了我们需要连接的五个字段,所以我们可以使用文件权限来使密码更安全. host:port:dbname:user:password such as myhost:5432:postgre ...

  3. M面经Prepare: Delete Words Starting With One Character

    给定一个char array, 这个array是一个句子,然后给定一个字母,把这个array里面带有这个字母开头的单次删掉,操作是要求in place. 检测   array[i]==' ' & ...

  4. 搞ACM的你们伤不起

    这个虽然看过很多遍了,但是还是看着想笑,有时候真的想问问自己为什么这么菜,血流得还不够? 劳资六年前开始搞ACM啊!!!!!!!!!!  从此踏上了尼玛不归路啊!!!!!!!!!!!!  谁特么跟劳资 ...

  5. UVa10023手动开大数平方算法

    题目链接:UVa 10023 import java.math.BigInteger; import java.util.Scanner; public class Main { public sta ...

  6. java BigInteger

    用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂.用Java刷了一些题,感觉Java还不错,在处理高精度和进制转换中,调用库函数的来处理.下面是写的一些Java中 ...

  7. 大数据Spark超经典视频链接全集

    论坛贴吧等信息发布参考模板 Scala.Spark史上最全面.最详细.最彻底的一整套视频全集(特别是机器学习.Spark Core解密.Spark性能优化.Spark面试宝典.Spark项目案例等). ...

  8. 复习课程jdbc:使用配置文件properties进行连接数据库,数据库存取图片,批处理,时间戳,事物回滚等等

    使用配置文件properties进行连接数据库 首先创建一个file自定义文件名,但是后缀名必须改为.properties(不分大小写):如config.properties: 然后双击config. ...

  9. CCF真题之模板生成系统

    问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerr ...

  10. centOS6.6升级gcc4.8

    最近想升级mesos0.23.0,结果编译mesos0.23.0需要gcc4.8+,可是centOS6.6最高版本的gcc也只到4.4.7版本,只好手动升级一下了. 下载4.8.2源码 wget ft ...