python面向对象编程


python中一切都是对象!数据与操作数据的方法都要封装到对象中。

面向对象和面向过程

1.面向过程:流程化。
开车-1.发动 2.挂挡 3.踩油门 4.出发
2.面向对象:软件中对象之间的关系
如何造车?
—需要多人协作,多种零件组合
1.轮胎
2.发动机
3.车壳
4.座椅
5.玻璃

面向对象的思考方式

先从问题中找名词,再从问题中找动词,确立这些名词哪些可以作为类,再确定类的属性和方法,确定类之间的关系。
类是对象的模板。例如:做饼干的模具,类是模具,对象是饼干。
对象包括三个部分:id、type、value(又包括属性attribute、method)

数据

数组

结构体

对象

类的定义

用class,内含方法和数据

class DataSalary:
    def __init__(self,name,age):
    #用构造函数来初始化实例对象的实例属性
        self.name=name #实例属性
        self.age=age   #实例属性
    def mydata(self):
        print("{0}的工资是{1}".format(self.name,self.age))
s1=DataSalary("明明",26)#通过类名(参数列表)来调用构造函数
s1.mydata()

构造函数__init__()

作用:负责初始化创建好的对象,给实例属性赋值。
规则:
1.类中方法定义的第一个值必须是self,是指刚刚创建好的实例对象。
2.通过类名(参数列表)来调用构造函数,调用后将创建好的对象返回给响应的变量。

s1=DataSalary("明明",26)

3.用构造函数来初始化实例对象的实例属性,如

    def __init__(self,name,age):
        self.name=name #实例属性
        self.age=age   #实例属性

4.相当于c++中的指针,c中的this

实例属性

1.self.实例属性名=初始值
2.在类内,即为self.xxx调用
3.在类外,先创建对象 s1=DataSalary(),调用构造函数,然后再s1.xxx

实例方法

def 方法名(self[,形参列表])
函数体
调用时需要 对象.方法名([实参列表])

实例对象的方法调用本质

a=DataSalary()
a.mydata()相当于DataSalary.mydata(a)

其他操作

1.dir(obj)
print(dir(对象))可以获得对象的所有属性和方法
2.obj.dict
print(对象.dict)为对象的属性字典
3.pass 空语句
class man
pass
表示还没想好
4.isinstance(对象,类名):确定对象是否是指定类

类属性和类方法

类属性从属于类对象,也称为类变量,可以被所有实例对象共享
类属性的定义方式:

class Student:
    count=0
    company="山师"
    def __init__(self,name,age):
        self.name=name
        self.age=age
        Student.count=Student.count+1
    def my(self):
        print(self.name,"的年龄是:",self.age)
        print("公司是",self.company)#这里为什么是self.company而不可以是Student.company?
s1=Student("乐乐",12)
s2=Student("明明",13)
s1.my()
print("共有",Student.count,"个学生")#而这里却是Student.count而不是self.count?
print(type(Student))
print(type(s1))

内存分析
内存分析

析构函数和垃圾回收机制

—del—销毁对象所需要的操作,对象没有被引用时,会被自动销毁。不需要自定义析构方法。

class Person:
	def_del_(self):
		print("销毁对象"{0}".format(self))
p1=Person()
p2=Person()
del p2
print("程序结束")

_call_方法和可调用对象

定义该方法的对象为可调用对象,即该对象可以像函数一样被调用。
a=30
b=50
c=a+b
其实是d=a.add()
aa()

class SalaryAccount:
    def __call__(self,salary):
        yearSalary=salary
        monthSalary=salary/12
        daySalary=salary/365
        print("算工资啦")
        return dict(yearSalary=salary,monthSalary=monthSalary,daySalary=daySalary)
s=SalaryAccount()
print(s(210000))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值