Python第九课,面向对象介绍
时间:2023-2-27 21:20 作者:wen 分类: Python
类和对象:
类: 是具有一组, 相同或者相似特征[属性] 和行为[方法]的一系列对象的组合
对象: 是实实在在的一个东西, 类的实例化, 具象化
# 定义类和对象
class Person():
"""
属性
"""
name = 'zhangsan' #类属性
age = 20
def __init__(self):
self.name = '李四' # 实例属性
"""
方法
"""
def eat(self):
print('吃饭')
pass
def walk(self):
print('走路')
pass
# 创建对象
xm = Person()
# 调用方法
xm.eat()
xm.walk()
# 调用属性
print('xm的姓名是:%s,年龄是:%d' % (xm.name, xm.age))
实例方法
在类的内部, 使用 def 关键字定义, 第一个参数默认是 self[名字标识可以是其它的名字, 但是这个位置必须被占用], 实例方法是归于类的实例所有
属性: 在类的内部定义的属性, 方法外面的属性称为类属性定义方法里面是有 self 引用的属性称为实例属性.
总结 init
- python 自带的内置函数, 具有特殊的函数, 是有双下划线包起来[魔术方法]
- 是一个初始化方法, 用来定义实例属性, 和初始化数的, 在创建对象的时候自动调用, 不用手动调用
- 利用传参的机制可以让我们定义功能更加方便
self 和对象指向同一个内存地址, 可以认为self就是对象的引用
self 只有在类中定义, 实例方法的时候才有意义, 在调用时候不必传入相应的参数, 而是由解释器, 自动去指向
self 的名字可以更改, 可以定义成其他的名字, 只是约定成俗的定义成了 self
self 指的 是类实例对象本身, 相当于C++ 的 this
魔术方法(常用的几种)
inif :初始化一个类对象
str : 将对象转换成字符串 str(对象) 测试的时候, 打印对象的信息。
new : 创建并返回一个实例对象, 调用一次,就会得到一个对象
class :获取已知对象的类(对象.class)
del : 对象在程序运行结束后进行对象销毁的时候调用, 来释放资源。
class Person:
name, age, sex = '', '', ''
def __init__(self, name, age, sex):
"""
实例属性的声明
:param name:
:param age:
:param sex:
"""
self.name = name
self.age = age
self.sex = sex
pass
def __str__(self):
"""
打印对象 自定义对象 是内容格式的
:return:
"""
return '{name:%s,age:%d,sex:%s}' % (self.name, self.age, self.sex)
pass
def __new__(cls, *args, **kwargs):
"""
创建对象实例的方法 每调用一次就会生产一个新对象 cls 就是class的缩写
创建: 可以控制创建对象的一些属性限定, 经常用来做单例模式来使用
:param args:
:param kwargs:
"""
print('new 函数的执行')
return object.__new__(cls) # 在这里是真正创建对象实例的
pass
def eat(self):
print('%s在吃饭' % self.name)
pass
def walk(self):
print(self.name + '在走路')
pass
def __del__(self):
print('del 函数的执行')
pass
pass
# __new__ 和 __init__ 函数的区别
# new 类的实例化方法, 必须要返回该实例, 否则对象就创建不成功 , 至少有一个参数就是cls代表要实例化的类, 此参数在实例化是由解释器提高
# init 用来做数据属性的初始化工作, 也可以认为实例的构造方法
xm = Person('张三', 20, '男')
xm.eat()
print(xm.name) # 添加实例化属性
lisi = Person('lisi', 18, '男')
print(lisi.name)
lisi.walk()
print(lisi)
标签: python基础