python——面向对象(三)

"""""
一成员修饰符
1.共有
2.私有成员,__字段名:无法直接访问,只能间接访问

私有字段是无法继承的 也就是说只在方法内部有效
即使继承了也不能调用
"""
#2.字段私有与公有

class Foo:
    def __init__(self,name,age):
        self.name=name
        self.age = age
        self.__age=age
        #私有,外部无法直接访问
    def show(self):
        return self.__age

obj=Foo(‘lin‘,19)
print(obj.name)
print(obj.age)
#p0rint(obj.__age)
#访问不到
ret=obj.show()
print(ret)

#同理静态字段也是可以的

#2.方法私有与公有

class Foo:
    def __f1(self):
        return 123
    def f2(self):
        r=self.__f1()
        return r

obj=Foo()
r=obj.f2()
print(r)

"""""
二、特殊
__init__ 类()自动执行
__del__  对象()被销毁时,执行
__dict__  将对象中封装的所有内容通过字典形式返回
__call__ 对象() 类() 自动执行
__int__   int(对象)
__str__    str()

__add__    加
__getitem__
"""
class Foo:
    def __init__(self):
        print(‘123‘)
    def __call__(self, *args, **kwargs):
        print(‘abc‘)
obj=Foo()
obj()#abc
Foo()()#与上方相等

class Foo:
    def __init__(self,n,a):
        self.name=n
        self.age=a

    def __str__(self):
        return ‘%s-%s‘ %(self.name,self.age)
    #若没有这句会报错

obj=Foo(‘alex‘,18)
print(obj)

class Foo:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __add__(self, other):
        return self.age+other.age

obj1=Foo(‘lin‘,19)
obj2=Foo(‘lin‘,66)
r=obj1+obj2
#两对象相加时,自动执行第一个对象的__add__方法,并将第二个对象当作参数传递
print(r)#85

class Foo:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __getitem__(self, item):
        print(item)
        return item+2
    def __setitem__(self, key, value):
        print(key,value)
    def __delitem__(self, key):
        print(key)
#字典
obj=Foo(‘lin‘,20)
d=obj.__dict__
print(d)#{‘age‘: 20, ‘name‘: ‘lin‘}

#取
li=Foo(‘lin‘,20)
r=li[8]
print(r)

#赋值
li[100]=‘asdf‘

#删除
del li[999]

#如何进行遍历
class Foo:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __iter__(self):
        #1.执行li对象的类F类中的iter方法,并获取返回值
        #2.循环上一步返回的对象
        #3.可如果类中由__iter__方法,则对象为可迭代对象
        #4.对象.__iter__()的返回值:迭代器
        #5.for循环 可迭代对象
        return iter([1,2,3])
li=Foo(‘lin‘,20)
for i in li:
    print(i)
"""""
三metclass类的
a python中一切事物都是对象
b
  class Foo:
      pass
obj =Foo()
#obj是对象,Foo类
#Foo类也是一个对象,type的对象

c.
   类都是type类创建的对象 type(..)
   “对象”都是以类的对象 类()
"""

#类的创建
class Foo(object):
    def dunc(self):
        print(123)
obj=Foo()
#============
"""""
type(‘Foo‘,(object,),(‘func‘:lambda x:123))
声明一个类,类里面有一个成员func
Foo=type(‘Foo‘,(object,),(‘func‘:lambda x:123))
Foo()
"""
#让foo不再通过type类型创建 而是通过自定义的mytype类进行创建
class mytype(type):
    def __init__(self,*args,**kwargs):
        print(‘123‘)
        pass
    def __call__(self, *args, **kwargs):
        print(456)
class foo(object,metaclass=mytype):
    def func(self):
        print(‘abc‘)

obj=foo()#456
#foo=mytpe()

原文地址:https://www.cnblogs.com/zzzi/p/11478446.html

时间: 2024-11-10 16:21:22

python——面向对象(三)的相关文章

Python面向对象(三)

一.绑定方法与非绑定方法 一.绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的 2.绑定给类的方法:为类中定义的函数加上一个装饰器@classmethod 二.非绑定方法:既不与类绑定,又不与对象绑定,意味着对象和类都可以来调用,无论谁来调用都是一个普通的函数,普通函数没有自动传值的效果 案例如下: class Foo: def f1(self): print(self) @classmethod def f2(cl

Python 面向对象三(转载)

来源:Mr.Seven www.cnblogs.com/wupeiqi/p/4766801.html 四.类的特殊成员 上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段.方法和属性三大类成员,并且成员名前如果有两个下划线,则表示该成员是私有成员,私有成员只能由类内部调用.无论人或事物往往都有不按套路出牌的情况, Python的类成员也是如此,存在着一些具有特殊含义的成员,详情如下: 1. __doc__ 表示类的描述信息 2. __module__ 和 __class__ __

Python 面向对象 三

isinstance :检查是否object是类cls的对象,后面可以跟创建自己的类,也可以是基类. 可用于判断excel里面的数值是否是int类型 例如:isinstance(对象,类) issubclass:检查某个类是否是某个类的子类. 例如:issubclass(类,类) 例: class A: pass class B(A): pass b = B() print (isinstance(b,A)) -->True,判断b是由A创建的, print (issubclass(B,A))

三十九、python面向对象一

A.python面向对象 1.面向对象基础:面向对象三个特性:封装,继承,多态C# java 只能用面向对象编程Ruby,python 函数+面向对象 函数式编程:def 函数def f1(a): return "f1"def f2(b): return "f2" f1("www")f2("aaa") 面向对象式编程,类,def 方法class Func: def f1(self,a): return "f1&quo

python 面向对象(进阶篇)

上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象

Python面向对象-day07

写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心是过程,过程就是解决问题的步骤:流水线.机械式: 优点:复杂的问题简单化,分成多个功能单元: 缺点:可扩展性差 应用:Linux内核.httpd.git - 2.面向对象 核心是对象: 要理解对象,应该把自己当做上帝,在上帝眼里一切存在的事物都是对象,不存在的也可以创建出来: 对象是 特征(变量)和

python 面向对象 进阶篇

在上篇<python面向对象>中,简单介绍了python中面向对象的基本知识 在这篇博客中,详细介绍python类的成员,成员修饰符,类的特殊成员. 类的成员 类的成员分为三种:字段,方法和属性 所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份. 字段 字段包括普通字段和静态字段.静态字段,保存在类中.普通字段,保存在对象中. class FOO: country = “中国

(转)Python 面向对象编程(一)

Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程.下面就来了解一下如何在Python中进行对象编程. 一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class className: block 注意类名后面有个冒号,在block块里面就可以定义属性和方法了.当一个类定义完之后,就产生了一个类对象.类对象支持

Python面向对象之类的成员

Python面向对象的编程过程中,我们为类实例化了对象,并通过对象指针来访问类中对应的资源,那么这些资源大体分为三大部分,分别是字段.方法和属性,我们将这三大块统称为类的成员. 一.字段 字段可以分为静态字段.动态字段,下面通过代码展示类中的两种字段 class MyClass:     # 静态字段,属于类,多个对象共用一个静态字段     leader = "abuve"       def __init__(self):         # 动态字段,属于对象,也可以叫普通的字段

我对 python 面向对象的理解

一.引言 面向对象的编程---object oriented programming,简称:OOP,是一种编程的思想.OOP把对象当成一个程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象的出现极大的提高了编程的效率,使其编程的重用性增高. python面向对象的重要术语: 1.多态(polymorphism):一个函数有多种表现形式 2.继承(inheritance)子项继承父项的某些功能 3.封装(encapsulation)把需要重用的函数或者功能封装,方便其他程序直接调用 4.