美文网首页
python基础学习2(面向对象)

python基础学习2(面向对象)

作者: SecondRocker | 来源:发表于2018-07-08 21:11 被阅读12次

python 是完全面向对象,一切皆对象。那么对象怎么使用呢?

定义类

类是抽象的模板,对象是类的实例;python也是用class定义类

#定义类(无实现时后跟pass)
class A:pass
#初始化实例(构造函数无参数)
A()
#定义有参数构造函数
class A:
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def print_info(self):
    print("name:%s,age:%s" % (self.name,self.age))
  def __private_m(self):
    print('private_method call')
  def call_private(self):
    print('can only call inside class')
    self.__private_m()
A('wang',30).print_info()
A('me',12).call_private()

#第一个参数为self标明为 实例方法,实例方法调用时 直接忽略第一个参数,使用与ruby类似
# 双下划线开头的方法,变量,是私有的,只能在类内访问

继承

python 支持多继承

class B(A):pass
B('wang',30).print_info()
isinstance(B('s',4),A) #返回True,B的实例也算A的实例
#B继承了A的方法和属性
class C(A,B,C):pass #多继承

属性

如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法:


image.png

hasattr 方法判断对象有没有指定属性,类似ruby的respond_to?
这么用:

a = A('wang',20)
hasattr(a,'name') #返回True

setattr设置对象的属性:

setattr(a,'name','peter')
print(a.name)  #peter

getattr获取对象属性

getattr(a,'name')
#如果试图获取不存在的属性,会抛出AttributeError的错误,可以传入一个default参数,如果属性不存在,就返回默认值
getattr(a,'b')
getattr(a,'b','c')

由于Python是动态语言,根据类创建的实例可以任意绑定属性。
给实例绑定属性的方法是通过实例变量,或者通过self变量:

a.address = 'bj'
class C:
  name = 'c class'

print(C.name) #c class

动态添加方法
class A:pass

def say_sth(self,who):
print("%s:say hello~" % who)

A.say_sth = say_sth
A().say_sth('me')
使用slots限制只能添加特定属性

class A:
  __slots__ = ['name','age']

a = A()
a.name = 'wang'
a.address = 'bj' #Error

使用 @property 定义方法型属性

class A:
  @property
  def name(self): #get方法
    return self.__name
  @name.setter
  def name(self,name):#set方法
    self.__name =  name

a = A()
a.name = 'wang'
a.name #wang

相关文章

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • python基础学习2(面向对象)

    python 是完全面向对象,一切皆对象。那么对象怎么使用呢? 定义类 类是抽象的模板,对象是类的实例;pytho...

  • Python 入门笔记

    1.Linux基础 2.Python基础 3.Python面向对象 4.项目实战 励志公式 1.01365=...

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • 黑马上海37期Python全套视频课程

    python基础班 1-1 Linux基础 1-2 python基础 1-3 面向对象 1-4 项目飞机大...

  • python面向对象之基本篇

    在学习python面向对象的时候,确保自己对python基础已经有所掌握,包括python安装使用,python基...

  • python面试宝典1概述与数据结构

    学习目标 用于对付python、测试、运维等python基础面试,涵盖如下内容: Python的核心概念 面向对象...

  • 廖雪峰python3 教程

    观其大纲 1 python基础 2 函数 3 高级特性 4 函数式编程 5 模块 6 面向对象编程 7 面向对象高...

  • python的面向对象

    python的面向对象(ObjectOriented,OO)-面向对象编程-基础-公有私有-继承-组合,Minxi...

  • Python 学习笔记

    Python 学习笔记 Python 基础语法 Python是一种面向对象解释型计算机编程语言,语法简洁凝练,强制...

网友评论

      本文标题:python基础学习2(面向对象)

      本文链接:https://www.haomeiwen.com/subject/dsxauftx.html