python类的属性方法使用详解

主要内容

1. 实例的属性和方法
2. 类的属性和方法
3. 类的静态属性和方法
4. 类的私有属性和方法
5. 运算符重载

使用样例

import time

class User:
    # 类属性userid,和实例属性self.userid是两个不同范围的变量
    userid = 'wang'

    # 构造方法:
    #       1.self指代当前类的实例,且位于__init__第一个参数,其他参数作为构造参数
    #       2.self是一种规范,也可用其他合法变量名
    def __init__(self, userid, password):
        self.userid = userid
        # 私有属性
        self.__password = password
        # 访问私有方法
        self.__test()

        print('访问类属性:', self.usertotal)
        # 访问类属性: -11

        # 用过类名修改类属性
        User.usertotal += 1

        # 以下创建实例变量usertotal,与类变量同名,区别:
        #       1.这是两个不同范围的变量
        #       2.这里读取同名类变量usertotal为self.usertotal初始化,相当于:self.usertotal = User.usertotal + 1
        #       3.并不会修改 User.usertotal的值
        self.usertotal += 100

        # 用类名访问静态方法
        print('构造方法:', User.getDate())
        # 构造方法: 2020-05-27
	# 实例的方法
    def info(self):
        print(self.userid, self.__password)

    # 类属性
    usertotal = -11

    # 类方法:
    #       1.使用修饰器 @ classmethod标识
    #       2.在类外通过对象名调用,又可通过类名调用
    #       3.不能访问实例属性,可以访问类属性
    @classmethod
    def printUsertotal(cls):
        print(cls.usertotal)

    # 静态方法:
    #       1.用@staticmethod标识
    #       2.与类没有直接关系,相当于普通函数
    #       3.没有self参数,无法访问类的实例属性
    #       4.没有cls参数,无法访问cls的属性
    #       5.只能使用通过类名调用
    @staticmethod
    def getDate():
        print('静态方法:', User.usertotal)
        dd = time.localtime()
        dstr = time.strftime("%Y-%m-%d", dd)
        return dstr

    # 私有属性和方法:
    #       1.双下划线开头的属性是私有属性
    #       2.双下划线开头的方法是私有方法
    #       3.只能在类内部使用
    def __test(self):
        print(self.userid, self.__password)

    # 把一个类的实例变成 str,需要实现方法__str__()
    def __str__(self):
        return 'User类:' + str(self.usertotal) + '\t' + str(self.userid) + '\t' + str(self.__password)

    # 运算符重载,用于比较对象
    # 重载的还有很多用法:"==":___e__, ">=":__ge__, ">":__gt__, "<=":__le__, "<":__lt__
    def __eq__(self, other):
        print('other:', other.__password)
        return self.userid == other.userid and self.__password == other.__password
        # return self.userid is other.userid and self.__password is other.__password


def usertest():
    # 实例化一个类
    user = User('zhang', '123456')
    user.info()
    User.printUsertotal()
    print('类变量usertotal:', User.usertotal)
    # 类变量usertotal: 1
    print('实例变量usertotal:', user.usertotal)
    # 实例变量usertotal: 101
    print(User.getDate())
    # 2020-05-27
    print(user.userid)
    # zhang
    print(User.userid)
    # wang
    print(user)
    # User类:90	zhang	123456

    other = User('zhang', '1234567')
    print(user == other)


if __name__ == '__main__':
    usertest()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值