(python作业二)面向对象self用法,init的函数的用法以及成员函数的调用方法

一。self用法

在Python为面向对象编程中,成员函数被调用时,无论函数有没有参数,都会有一个参数传给它,这个参数就是类本身,所以我们在定义成员函数时不管有没有参数传递,都要写上一个参数,这个参数代表类本身,通过这个参数我们可以引用类的成员变量和成员函数。
这个参数通常我们命名为self,当然你也可以写为其它的名字,但是为代码的标准和可读性,不建议这样操作。

class Staff:  # Staff为员工的意思
    bonus = 30000  # bonus为津贴、奖金的意思

    def salary(self):  # salary为工资的意思
        salary = 10000+self.bonus
        return salary


zhang_san = Staff()
zhang_san_salray = zhang_san.salary()

# self代表类的实例,而非类
class TestDemo():
    # 可将self理解为实例td
    def testFn(self):
        print(f"谁调用我,我就是谁,此时调用我的是{self}")
        # 实例调用\_\_class\_\_属性时会指向该实例对应的类
        print(f"我是按照{self.\_\_class\_\_}创建出来的")


# td为TestDemo的实例
td = TestDemo()
# 在类中方法的形参中,self参数一定要定义,但是在调用时会自动传入。
td.testFn()

谁调用我,我就是谁,此时调用我的是<\_\_main\_\_.TestDemo object at 0x00000000028836C8>
我是按照<class '\_\_main\_\_.TestDemo'>创建出来的
说明:

<__main__.TestDemo object at 0x00000000028836C8>表示:
self是一个TestDemo类型的object(对象),对象在内存的地址为0x00000000028836C8。

二。init的函数的用法

在创建类时, 可手动添加一个 __init__()方法,称为构造方法,这是一个实例方法
构造方法用于创建实例对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用
一般用来初始化对象的某些属性

class 类:
    def __init__(self, 参数):
        self.属性 = 参数     ...

对象 = 类(参数)

init 的前缀和后缀是两个下划线 _
方法可以包含多个参数,但必须要包含一个 self 参数,且必须为第一个参数,所以至少要包含一个 self 参数
第一个参数 self 指向新创建的对象

# 带参数
class PoloBlog:
    def __init__(self, name, age):
        print("自动调用构造方法")
        # 初始化实例属性
        self.name = name
        self.age = age

    # 下面定义了一个 say 实例方法
    def say(self):
        print(self.name, self.age)


blog = PoloBlog("姓名", "年龄")
blog.say()
三。成员函数的调用方法

class Student:
    #成员变量
    def __init__(self):
        self.name=None
        self.gender=None
    #成员方法: self 仅在声明时占位, 无需传递具体参数
    def play(self):
        print(self.name+'的性别 '+self.gender+",她正在玩游戏!")
    def study(self):
        print(self.name+'的性别 '+self.gender+",她正在学习!")
 
 
# #创建对象
stu =Student()
#赋值
stu.name='mike'
stu.gender='Woman'
#调用方法
stu.play()
stu.study()

class Student:
    #成员变量
    def __init__(self):
        self.name=None
        self.gender=None
    #成员方法带参数: self 仅在声明时占位, 无需传递具体参数
    def play(self,thing):
        print(f'{self.name}的性别-{self.gender},她正在玩{thing}')
    def study(self,thing='java'): # 默认形参
        print(f'{self.name}的性别-{self.gender},她正在学习{thing}')
 
 
#创建对象
stu =Student()
#赋值
stu.name='samantha'
stu.gender='Woman'
#调用方法
stu.play('CS')
stu.study()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值