Python学习_面向对象
# 面向对象简介
多个对象 ---> 提取对象的共同特征和动作 ---> 封装到一个类别中
'''
class 类名[(父类)]:
属性:特征
方法:动作
'''
- 类名要求首字母大写,多个字母使用驼峰式命名
# 使用类创建对象
可以将类看作是一个模板,通过固定的模板,选取其中的属性,组成各种各样的对象
class Phone:
brand = 'huawei'
__private = '外部无法修改' # 以__开头的变量仅能在类的内部进行修改,无法在外部通过Phone.__private 修改
xiaoming = Phone()
xiaohong = Phone()
print(xiaoming.brand)
xiaohong.brand = 'xiaomi'
print(xiaohong.brand)
>> huawei
xiaomi
# 类中的方法
# 普通方法格式
'''
def 方法名(self[,参数,参数]):
pass
'''
class Phone:
brand = 'xiaomi'
price = 6999
def call(self):
print('self值为:',self)
phone1 = Phone()
print(phone1)
phone1.call()
# 魔术方法
__名字__()
称作魔术方法
- 创建对象的过程了解
- 执行
phone1 = Phone()
后,利用类这个模板向内存申请一个与Phone
一样的空间 - 在
Phone
中找有没有魔术方法- 没有则将开辟的内存给
phone1
- 有则执行里面的动作,之后将内存给
phone1
,其中传入魔术方法的self
为申请的空间地址,也就是最终赋值给phone1
的空间地址。
- 没有则将开辟的内存给
- 执行
class Phone:
def __init__(self):
print('----init----')
def call(self):
print('self值为:',self)
phone1 = Phone()
>> ----init----
# 类方法
特点:
- 类中的方法上面添加
@classmethod
构成类方法 - 传入的参数为
cls
,意为当前类 - 类方法里只能使用类属性,不可使用对象属性
- 类方法的调用不依赖于对象,没实例化对象的时候依然可以通过
类名.类方法名()
调用 - 类方法中不能使用普通方法
# 静态方法
特点:
- 需要用
@staticmethod
装饰器装饰 - 静态方法是无需传递参数的
- 只能访问类的属性和方法
# 私有化及@property装饰器
私有化:在变量名前加__
,如__name
@property
:设置特殊的set,get方法
class Person:
def __init__(self,name,age):
self.__name = name
self.age = age
@property
def name(self):
return self.__name
@name.setter
def name(self,name):
self.__name = name
p = Person("Jonny",20)
print(p.name)
p.name = "JoJo"
print(p.name)
编辑 (opens new window)
上次更新: 2023/08/09, 13:21:24