zoukankan      html  css  js  c++  java
  • Python基础十四:面向对象编程三:属性

    Python基础十四:属性


    Python基础系列内容为学习廖雪峰老师Python3教程的记录,廖雪峰老师官网地址:廖雪峰Python3教程


    Author:yooongchun

    Email:yooongchun@foxmail.com


    • 获取对象信息:在Python中要获取对象的信息可以使用这几个函数:type(),isinstance(),dir()

      • type用法示例:
      >>> type(123)
      <class 'int'>
      >>> type('www')
      <class 'str'>
      >>> type([123])
      <class 'list'>
      >>> type((122,123))
      <class 'tuple'>
      >>> type({'name':'bob'})
      <class 'dict'>
      • 判断是否属于函数
      >>> import types
      >>> type(abs)
      <class 'builtin_function_or_method'>
      >>> type(abs)==types.BuiltinFunctionType
      True
      • isinstance用法示例
      >>> isinstance(abs,types.BuiltinFunctionType)
      True
      >>> isinstance(123,int)
      True
      >>> isinstance('12',str)
      True
      >>> isinstance([12],list)
      True
      >>> isinstance([12],(list,tuple))
      True
      >>> isinstance({'bbb':122},(list,tuple))
      False
      • dir用法示例:其返回一个对象的所有属性和方法
      >>> dir(int)
      ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
      
    • 属性:__xxx__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度。在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面的代码是等价的:

      >>> len('123')
      3
      >>> '123'.__len__()
      3

      这样当想为自己写的类添加len(xxx)用法时只需在定义时添加__len__()函数。

      在列出对象的属性后,配合getattr(),setattr()hasattr()方法可以直接操作一个对象的状态。

      >>> class MyObject(object):
      ...     def __init__(self):
      ...             self.x=9
      ...
      >>> obj=MyObject()
      >>> hasattr(obj,'x')
      True
      >>> obj.x
      9
      >>> setattr(obj,'y',11)
      >>> hasattr(obj,'y')
      True
      >>> getattr(obj,'y')
      11
  • 相关阅读:
    Android studio初次安装启动时弹出unable to access android sdk add-on list提示的解决方法
    SQL Server(MSSQLSERVER) 请求失败或服务未及时响应,有关详细信息,请参见事件日志或其他的适用的错误日志。
    Docker启动时提示Get Permission Denied while trying to connect解决方法
    Docker版本与centos和ubuntu环境下docker安装介绍
    菜鸟宝典之Windows Server 2012 R2上PHP、MySQL环境搭建
    Java入门指南-04 顺序、分支、循环
    Java入门指南-03 操作符与表达式
    Java入门指南-02 变量
    Java入门指南-01 基本概要说明
    JavaWeb零基础入门-02 开发环境安装
  • 原文地址:https://www.cnblogs.com/yczha/p/13160230.html
Copyright © 2011-2022 走看看