面向对象的方法

面向对象: 相当于通过一个工具,完成一件事情面向过程: 定义函数,文件归类等等,所以的操作都是自己亲力亲为 list1 = [1,6,2] 面向过程lis
面向对象: 相当于通过一个工具,完成一件事情
面向过程: 定义函数,文件归类等等,所以的操作都是自己亲力亲为
list1 = [1,6,2] # 面向过程
list1.sort() # 面向对象
print(list1)
=====================================
什么是类? 对具有相同特性的一系列事物的统称,是一个抽象的东西
类包含什么?
属性: 人有眼睛,鼻子,嘴巴...
行为: 吃饭,睡觉,打豆豆....

类的作用:创建对象

如何定义类
class 类名:
属性
行为(方法)
如何创建对象?
对象名 = 类名()
一个类可以创建多个对象
lass Person:
# 定义吃饭
def eat(self,name):
print('%s在吃饭'%name)

def sleep(self,name):
print('%s在睡觉'%name)

xiaoming = Person()
xiaoming.eat('小明')
xiaoming.sleep('小明')
========================
elf: 指的是实例本身,当前谁调用这个方法,这个self指向就是谁
一个类可以创建多个对象,并且每个对象都爱不一样
每个人都是一个独立的个体,世界上没有完全相同的两个人
对象的属性
class Person:
def hi(self):
print('%s说了hello'%self.name)
======================
__init__()  魔法方法,具有特殊作用的方法
对象的属性应该在什么时候被添加的
对象被创建的时候就已经有了属性的
所以添加属性的时候,应该是在类的实例化过程中添加

__init__ 初始化 __**__() 魔法方法
调用时机: 在创建对象的时候,自动调用
 定义人类
class Person:
# init __init__容易出错,一定要注意写正确
def __init__(self,name,age):
self.name = name
self.age = age

# 定义自我介绍的方法
def self_introduc(self):
print('大家好我是%s,今年%s岁'%(self.name,self.age))
==============================
__str__() 方法
作用: 返回函数对象的描述,也可以作为一个说明书
触发时机,打印当前对象的时候调用
class Person:
def __init__(self,name):
self.name = name
def __str__(self):
return '{}调用了我'.format(self.name)

a1 = Person('明明')
print(a1)
==========================
__del__()
触发时机:对象被回收之前
对象从内存中销毁前,自动调用,如果你希望对象被销毁之前再做一些事情,那就定义
class Person:
def __init__(self,name):
self.name = name

def __str__(self):
return '{}调用了我'.format(self.name)

def __del__(self):
print('{}已经挂了'.format(self.name))

def self_introduc(self):
print('你好,我是{},很高兴认识你'.format(self.name))
============================
私有权限: 私有属性,私有方法
如何定义私有权限?在属性前或者方法前加上__(双下划线)

python中没有绝对私有
class Man:
def __init__(self,name,money):
self.name = name
self.__money = money # 私有属性
def __str__(self):
return '%s有%s的私房钱'%(self.name,self.__money)

xiaoming = Man('小明',2000)
print(xiaoming.name)
# # 小明访问私有属性
# # print(xiaoming.__money)
# # 能否修改私有属性?
# xiaoming.__money = 3000
# print(xiaoming.__money)
# print(xiaoming)

# __dict__ 获取对象属性
print(xiaoming.__dict__)
xiaoming._Man__money = 3000
print(xiaoming)
===================
获取私有权限  get_名字
修改私有权限 set_名字
class Man:

def __init__(self):
self.__money = 2000

def __smoney(self):
print('藏私房钱了,偷偷藏{}块'.format(self.__money))

# 公有方法
def get_money(self,pwd):
if pwd == 'qwe123':
# 调用私有方法,获取私有属性
self.__smoney()
else:
print('这里面没有私房钱')

# junye = Man
# junye.get_money('qwe123')