Python基础学习6-面向对象

Python 中,一切皆对象。我们在前面学习的数据类型、函数等,都是对象。

面向过程适合简单、不需要协作的事务。 但是当我们思考比较复杂的问题,比如“如何造车?”,就会发现列出 1234 这样的步骤,是不可能的。那是因为,造车太复杂,需要很多协作才能完成。此时面向对象思想就应运而生了。比如面向过程就像我们用手去洗衣服一样,需要自己亲力亲为,接水,放洗衣粉,洗衣服,晾干。而面向对象则像似一台全自动洗衣机一样。封装了所有行为。显得格外方便。

 

目录

格式

构造方法__init__和__new__方法

实例方法

静态方法

__del__方法(析构函数)和垃圾回收机制


格式

class Student:
    company = "SXT" #类属性
    count = 0 #类属性
    def __init__(self,name,score):
        self.name = name #实例属性
        self.score = score
        Student.count = Student.count+1
    def say_score(self): #实例方法
        print("我的公司是:",Student.company)
        print(self.name,'的分数是:',self.score)

我们把对象比作一个“饼干”,类就是制造这个饼干的“模具”。

 

一个类创建对象时,每个对象会共享这个类的行为(类中定义的方法),但会有自己的属性值(不共享状态)。更具体一点:“方法代码是共享的,属性数据不共享”。

class Student:
    def __init__(self,name,score): #构造方法第一个参数必须为 self
        self.name = name #实例属性
        self.score = score
    def say_score(self): #实例方法
        print(self.name,'的分数是:',self.score)
s1 = Student('张三',80) #s1 是实例对象,自动调用__init__()方法
s1.say_score()

构造方法__init__和__new__方法

__new__()方法: 用于创建对象,但我们一般无需重定义该方法。__init__()方法:初始化创建好的对象,初始化指的是:“给实例属性赋值”。

def __init__(self,name,score):#self代表创建好的对象
    self.name = name #实例属性
    self.score = score
class Student:#类型一般首字母大写
    def __init__(self,name,score):
        self.name=name
        self.score=score

    def say_score(self):
        print("{0}的分数是:{1}".format(self.name,self.score))

s1=Student('xg',18)
s1.say_score()

s1.age=20
s1.salary=30000#增加对象
print(s1.salary)

实例方法

实例方法的定义格式如下:

def 方法名(self [, 形参列表]):
函数体
方法的调用格式如下:
对象.方法名([实参列表])

1. dir(obj)可以获得对象的所有属性、方法
2. obj.__dict__ 对象的属性字典
3. pass 空语句
4. isinstance(对象,类型) 判断“对象”是不是“指定类型”

s1.age=20
s1.salary=30000#增加对象
print(s1.salary)

s2=Student('gaoxixi',100)
s2.say_score()
Student.say_score(s2)

print(dir(s2))#对象属性和方法
print(s2.__dict__)#对象的属性字典
print(isinstance(s2,Student))#判断对象是不是类的实例对象

类方法是从属于“类对象”的方法。类方法通过装饰器@classmethod 来定义。第一个 cls 必须有;cls 指的就是“类对象”本身;


#类方法
class Student:
    company = "SXT"  # 类属性
    @classmethod
    def printCompany(cls):
        print(cls.company)


Student.printCompany()

静态方法

Python 中允许定义与“类对象”无关的方法,称为“静态方法”。

静态方法通过装饰器@staticmethod 来定义,格式如下:
@staticmethod
def 静态方法名([形参列表]) :
函数体

class Student:
company = "SXT" # 类属性
@staticmethod
def add(a, b): # 静态方法
    print("{0}+{1}={2}".format(a,b,(a+b)))
    return a+b
Student.add(20,30)

__del__方法(析构函数)和垃圾回收机制

_del__方法称为“析构方法”,用于实现对象被销毁时所需的操作。比如:释放对象
占用的资源,例如:打开的文件资源、网络连接等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值