Python 面向对象编程

一、
类 vs 对象 == 抽象 vs 具象


类:由抽象信息或者动作组成的集合,代表一类事物,抽象名词
实例(对象):具象的,是一类事物中某一个具体的事物

三、对象组成
信息(属性、成员变量、成员属性) + 动作(函数、成员函数)

四、定义一个类
1、class 关键字
2、类名称
3、冒号
4、类主题(可选属性、类方法)
例如:
# 定义一个学生类
class Student:
# 类属性
name = “NoName”
age = 0
tel = “0123456789”
score = 0
# 一般类所属函数应该用 self 做第一个参数传入
def listen(self):
self.name
self.age
pass
def test(self,name,time,addr):
pass

五、实例化一个叫张三的学生
zhangsan = Student()

# 对对象属性的使用
zhangsan.age = “28”
zhangsan.name = “zhangshan”
zhangsan.score = 87

# 对对象的成员函数的调用(不用传入 self 参数,因为程序自动把对象本身作为 self 传入)
zhangsan.listen()
zhangsan.test(“python”,”today”,”classroom 1201″)

六、self 关键字
self 代表的是实例自己
class Student:
def hello(self):
print(“大家好,我是 %s,我今年 %d 岁了。” %(self.name, self.age))
def serName(self, name):
self.name = name
def serAge(self, age):
self.age = age
# 实例化一个学生
lisi = Student()
# 调用实例函数,不需要手动输入 self 参数
lisi.setName(“LiSi”)
lisi.serAge(23)
lisi.hello()

七、构造函数
构造函数:在类进行实例化的时候,系统默认第一个被调用且必须被调用的函数。主要在实例化类时起初始化作用

# 构造函数的写法固定,init 前后都有两个下划线
# self 必须作为第一个参数存在,然后才是进行初始化的值
# 对 Student 进行实例化的时候,必须写入相应的参数,否则报错

例:
class Student:
def hello(self):
print(“大家好,我是 %s,我今年 %d 岁了。” %(self.name, self.age))
def __init__(self, name, age):
print(“调用构造函数”)
lisi = Student(“lisi”, 23)
则会打印出字符串 “调用构造函数”
以下会报错:
wangwu = Student(“wangwu”, 32)
# 实例化所属的属性没有定义和初始化
wangwu.hello()

如下改就正确了:
def __init__(self, name, age):
self.name = name
self.age = age
print(“调用构造函数”)

八、析构函数
和构造函数相反,当类实例需要销毁的时候,优先调用析构函数对资源进行消毁
固定写法,一般不用传入参数
def __del__(self):
print(“I Am DEAD…”)

九、访问限制
公有变量 vs 私有变量
python中,所有属性和类成员函数默认公有(python实际上没有绝对的私有变量)
公有:在程序中,任何代码都可以直接访问,不局限在类的内部或类本身
私有:除了类本身不允许外部任何代码访问

名字改编技术(name mangling):在私有变量前加上下划线和类名,跟私有变量名连起来组成一个新的名字,在外部可以通过这一方法来访问内部变量

# 私有变量的定义:
以两个下划线开头,不能以两个下划线结尾
例:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
self.__dairy = self.name + “的日记本”
def hello(self):
print(“My Name is %s, my dairy is %s” % (self.name, self.__dairy))
lisi = Student(“LiSi”,28)
lisi.hello()
print(lisi.name)
print(lisi.age)
print(lisi._Student__dairy) # 在外部用特殊方法强行访问私有变量

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值