码迷,mamicode.com
首页 > 编程语言 > 详细

python——面向对象(一)

时间:2019-09-06 22:34:35      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:构造   lin   pre   方法   调用   color   对象   中间人   span   

"""""
一、定义类并执行类中的方法
class类名:
def 方法名(self,arg):
    print(arg)
    return1

中间人(就是自定义的一个变量、对象而已)=类名()
ret=中间人.方法名(1)
print(ret)

elf指中间人
self必须加

面向对象有三种特性
1.封闭
2.继承
3.多态:python原生多态
"""
#例子:
class Bar:
    def foo(self,arg):
        print(self,arg)

z1=Bar()
print(z1)
z1.foo(111)
print(=============)
z2=Bar()
print(z2)
z2.foo(666)
#结果为:
# #<__main__.Bar object at 0x000001F048FF77F0>
# <__main__.Bar object at 0x000001F048FF77F0> 111
# =============
# <__main__.Bar object at 0x000001F048FF7B70>
# <__main__.Bar object at 0x000001F048FF7B70> 666

class Bar:
    def foo(self,arg):
        print(self,self.name,arg)
        #这里self就是为z 提取z中的name  也就是说self就是中间变量或者说是带进去那个数的自己

z=Bar()
z.name=lin
z.age=20
z.gender=male
z.foo(666)
#结果为:
#<__main__.Bar object at 0x000002360E0B7BA8> alex 666
"""
二、构造方法
"""

class Bar:
    def __init__(self,name,age):
        """
        __initt__为构造方法
        """
        print(123)
    def foo(self):
        print(456)

z=Bar(lin,20)
#这样可以传进去
#一般将这些东西都放在init里。也是进行一个初始化
#当构建了一个z=Bar()之后 内部会自动执行init方法
#python自动帮你调用
print(z)
z.foo()
"""
结果为:
123
<__main__.Bar object at 0x000001EC423A7E48>
456
"""

#三、应用
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def show(self):
        print(%s-%s%(self.name,self.age))

lin=Person(Lin,20)
lin.show()
ZZZI=Person(zzzi,20)
ZZZI.show()
"""""
Lin-20
zzzi-20
"""""

#四、三大特征之一:继承

class Grandfather:
    def piaochang(self):
        pass
class Father(Grandfather):#父类、基类
    def chifan(self):
        pass
    def hejiu(self):
        pass
    def shuijiao(self):
        pass

class Son(Father):#子类、派生类
    def wc(self):
        pass
s=Son()
s.chifan()#父亲里的所有函数都可以继承
s.piaochang()#父亲继承了爷爷
""""
同时 若是不想继承父类的某个函数设为x 可以在子类中重新写一个
这样默认会执行子类的
若父类子类都想执行可以用方法:
1.super(当前类名,self).x()   
推荐用super 其为固定写法
2.也可以用Father.x(self)
"""
#2.多继承问题
class F0:
    def a(self):
        print(F0)

class F1(F0):
    def a(self):
        print(F1)

class F2:
    def a(self):
        print(F2)

class S(F1,F2):
    pass
obj=S()
obj.a()
"""""
其结果为F1
当多继承有相同函数时,优先选择第一个继承的
多继承只能在python和C++中使用
若F1中同样没有时 优先在F1的父类中找 
永远优先最左边 类似二叉树
同时若两边有公共的父类的话 优先子类 最后在共同父类(根)里找
"""

 

python——面向对象(一)

标签:构造   lin   pre   方法   调用   color   对象   中间人   span   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!