对象oop

--coding:utf-8--

类的创建语法
    class 类名称
    ......变量......
    ......方法......
#创建一个类
class Person():
    def greeting(self):
        print("hello!")
        pass
    pass

#对象创建
obj = Person() #创建实例
obj.greeting()  #调用方法

'''
关于类的方法:
1.实例方法 - 使用频次最高
2.类方法 - 根据需求适度
3.静态方法 - 根据需求适度
4.普通方法 - 使用频次最少
区别:
定义语法格式;对变量访问权限

实例方法:属于实例对象,也可用类直接调用,但两者调用方式有区别
实例方法定义中,第一个参数必须为self
实例方法定义的语法范围:def 方法名称(self [,arg1 [,arg2 ]])
第一个参数self代表调用该方法的实例对象,在实例对象调用方法时可省略第一个参数,传递满足后面n-1个参数即可
'''
#创建一个类
class className():
    def instanceMethod(self,arg1,arg2):
        printf(">>{0}.format(self)")
        printf(">>{0}.format(arg1)")
        printf('>>{0}.format(arg2)')
        pass
    pass

#调用
instance = ClassMethod()
instanceObj.instanceMethod(10,20)  #实例对象调用实例方法
ClassName.instanceMethod(-10,2-,4) #类直接调用实例方法
'''
特殊的类实例方法1 -- 构造方法
构造方法是类成员方法中特殊的一种,方法名__init__()
该方法无需对象通过访问操作符调用,在类实例化对象的过程中自动调用。
作用:
    1.为对象创建内存空间
    2.实例对象的实例变量参数初始化
语法:
class className():
    def __init__():
        ...方法体...
'''
#eg:
class Person():
    def __init__(self):
        print('person类的构造方法')
        pass
    pass

instanceObj = Person() #Person创建实例自动调用了构造方法

'''
特殊的类实例方法1 -- 实例对象输出
print() 输出使用类创建好的实例对象时,默认输出该实例对象的十六进制内存地址
'''
def __str__(self):
    return '自定义设置Person类对象输出内容'
'''
实例变量
实例变量均在构造方法__init__中声明并初始化
self.实例变量名称 = 值 #self表示当前创建的实例对象
'''
class Person():
    def __init__(self,name,age):
        #定义实例变量
        self.name = name
        self.age = age
        pass
    pass
     
    def show(self):
        print('姓名:%s',% self.name)
        print('年龄:%s',% age)
        pass
    pass

if __name__ = '__main__':
    obj1 = Person('路人甲',23)
#实例变量的输出:
print('obj1的姓名:%s',% obj1.name)
obj1.show()
'''
属性访问
getattr(obj,name[,default]):访问对象属性
hasattr(obj,name):检查属性是否存在
setattr(obj,name):设置一个属性,属性不存在,创建新的
delattr(obj,name):删除属性
'''

'''
Python内置属性
__dict__:
__doc__:
__name__:
__module__:
__bases__:
'''
'''
封装
访问修饰符说明:
    1.标识符开头无下划线,该变量或方法为公有权限(即类内外均可调用)
        self.name or def show(self)
    2.标识符开头双下划线 --- 私有权限 --- 仅类内部自己访问调用
        self.__name  or  def __show(self)
    3.标识符开头单下划线 --- 保护权限 --- 类本身,子类可访问
        self._name   or  def _show(self)
'''
class ClassName():
    def __init__(self,arg1,arg2,arg3):
        #定义一个私有实例变量
        self.__privateVariable = arg1
        #定义一个公有实例变量
        self.publicVariable = arg2
        #定义一个受保护的实例变量
        self.projectVariable = arg3
        pass
    pass

instanceObj = ClassName(10,20,30)
printf(instanceObj.__privateVariable)
printf(instanceObj.publicVariable)
printf(instanceObj,_projectVariable)

你可能感兴趣的:(对象oop)