Python类与对象:从实例化到魔术方法

一、引言

        每天可能就抽空余时间写写,所以可能更的会比较少,好了,长话短说,昨天讲到类的定义了,咱们今天继续往下讲。

二、类

1.类的实例化

        类只是对象的一种规范,类本身基本上什么都做不了,必须利用类得到对象,这个过程就叫作类的实例化!

基本语法:

对象名=类名
注:在其他的编程语言中,类的实例化一般是通过new关键字实例化生成的,但是在Python中,我们不需要new关键字,只需要类名+()括号就代表类的实例。

案例:把game类实例化为对象g

#1.定义一个类
class game(object):   #object可写可不写
    #定义相关方法
    def play(self):
        print('玩游戏')
    def buy(self):
        print('买游戏')
#2.实例化对象
g1 = game()
#3.调用类的方法
g1.play()
g1.buy()

2.类中的self关键字

self也是Python内置的关键字之一,其指向了==类实例对象本身==。

# 1、定义一个类
class Person():
    # 定义一个方法
    def speak(self):
        print(self)
        print('Nice to meet you!')

# 2、类的实例化(生成对象)
p1 = Person()
print(p1)
p1.speak()

p2 = Person()
print(p2)
p2.speak()

三、对象的属性添加与获取

1.什么是属性

        在Python中,任何一个对象都应该由两部分组成:属性 + 方法,属性即是特征,比如:人的姓名、年龄、身高、体重…都是对象的属性。

车的品牌、型号、颜色、载重量...都是对象的属性。

对象属性既可以在类外面添加和获取,也能在类里面添加和获取。

2.在类外获取和添加属性

2.1设置

对象名.属性 = 属性值
# 1、定义一个Person类
class Person(object):
    pass

# 2、实例化Person类,生成p1对象
p1 = Person()
# 3、为p1对象添加属性
p1.name = '孙悟空'
p1.age = 500
p1.address = '五指山'

2.2获取

获取就是在设置的代码基础上,加上如下代码:

print(p1.name)
print(p1.age)
print(p1.address)

3.在类的内部获取外部定义属性

1.先定义类
class person():
    def speak(self)
    print(f'我的名字:{self.name},我的年龄:{self.age},我的住址:{self.address}')
2.根据类创建对像
p1 = person()
3.添加属性
p1.name = '孙悟空'
p1.age = 500
p1.address = '五指山'
4.调用类方法
p1.speak()

四、魔术方法

1.什么是魔术方法

        魔术变量:_ _name_ _,_ _file_ _这些都是魔术变量(拥有特殊功能的变量)

在Python中,_ _xxx_ _()的函数叫做魔法方法,指的是具有特殊功能的函数。

魔术方法都有自己的触发条件:

_ _init_ _()当实例化对象时,其会自动被触发(被调用)

_ _del_ _()当手工删除对象或对象被销毁时,其会自动被触发(被调用)

2._ _init_ _()方法

        作用:实例化对象时,连带其中的参数,会一并传给_ _init_ _函数自动并执行它。_ _init_ _()函数的参数列表会在开头多出一项,它永远指代新建的那个实例对象,Python语法要求这个参数必须要有,名称为self。

# 1、定义一个类
class Person():
    # 初始化实例对象属性
    def __init__(self, name, age):
        # 赋予name属性、age属性给实例化对象本身
        # self.实例化对象属性 = 参数
        self.name = name
        self.age = age

# 2、实例化对象并传入初始化属性值
p1 = Person('孙悟空', 500)
# 3、调用p1对象自身属性name与age
print(p1.name)
print(p1.age)

3._ _str_ _()方法

        当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了_ _str_ _方法,那么就会打印从在这个方法中 return 的数据。(另外要特别注意_ _str_ _方法返回字符串类型的数据)

五、结语

今天就先分享这么多,明天休息,可以给大家多分享一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值