面向对象编程
创建类和对象
# 面向对象编程 OOP 【objecte oriented programming】
# 类就是一个模板 包含多个函数 完成功能
# 一组相同或相似的特征属性行为方法的一系列对象的组合
# 对象是一个实实在在的东西 类的实例化、具体化
#定义类
class Person:
'''
对应人的特征
'''
# name='xiao王'
age=20 #类属性
def eat(self): # 实例方法 self必须被占用 可以为其他字符
self.name='xiao张' #实例属性
print('大口吃饭')
def run(self):
print('跑得飞快')
pass
personA=Person() # 创建对象 类的实例化->对象名=类名()
personA.eat()
personA.run()
print(personA.age)
print(personA.name) # 小张
魔术方法:内置的 init()方法
class PeopleA:
def __init__(self,name,sex,age): #初始化魔术方法 自动执行
self.name=name
self.sex=sex
self.age=age
pass
def eat(self,food):
'''
吃的行为
:return:
'''
print('{} like eat {}!'.format(self.name,food))
pass
xw=PeopleA('张鹏','男生',19) #会带入参数进初始化函数中去
# xw.name='小王' # 添加实例属性
# xw.sex='女生'
xw.eat('苹果')
print(xw.name,xw.sex,xw.age)
self
#self self和对象指向同一个内存地址
# 可认为self就是对象的引用 不用传入参数
# self只有在类中定义实例方法时才有意义。
# self名字是可以更改的
# self指的是类实例对象本身 相当于Java中的this
str
def __str__(self):
'''
打印对象格式 自定义对象 内容格式
:return:
'''
return '名字是%s,年龄是%s,性别是%s'%(self.name,self.age,self.sex)
xx=PeopleA('xiaowang','nan',12)
print(xx) #就是执行str方法
new
def __new__(cls, *args, **kwargs):
'''
场景:控制创建对象的属性限定时 单例
创建对象实例的方法,每调用一次便生成一个对象
:param args:
:param kwargs:
:return:
'''
print('__new__的执行')
return object.__new__(cls) #在这里是创建真正对象的
pass
首先__new__的执行
其次__init__函数执行