面向对象

2020-11-14  本文已影响0人  木子李007

一、class

例:

class User:   # 一个角色的类
   # self是一个将我们函数声明为单独的一个实例工作的参数
   # 每一个加了self的函数或者变量 都只能为自己的实例来工作
       # 在实例调用的时候,当前实例都会覆盖掉self
   # self用来指向当前工作实例
   # self是约定俗称的
   def __init__(self,name,sex,age):    # __init__是一个特殊内置函数
       self.name = name
       self.sex = sex
       self.age = age
       # 0:女人
       # 1:男人

   def run(self):
       print('%s的年龄是:%d' %(self.name,self.age))
c1 = User('小明',1,25)
   #c1.__init__(c1,'小明',1,25)
c2 = User('小红',0,28)
   #c2.__init__(c2,'小红',0,28)
c3 = User('小兰',1,18)
   #c3.__init__(c3,'小兰',1,18)

print(c1.name)  # 小明
print(c2.name)  # 小红
print(c3.name)  # 小兰

c1.run()  # 小明的年龄是:25
c2.run()  # 小红的年龄是:28
c3.run()  # 小兰的年龄是:18

二、 init

init函数为每一个实例进行数据的初始化工作
初始化函数 就是为了给实例创建属于自己的变量
init函数在实例化过程中自动调用,不需要你手动的来调用
init函数不允许有返回值,一旦有返回值,那么就报错啦
TypeError: init() should return None, not 'int'
类型错误:改函数必须返回一个None,而不是int

三、self

  1. self是一个将我们函数声明为单独的一个实例工作的参数
  2. 每一个加了self的函数或者变量 都只能为自己的实例来工作
  3. 在实例调用的时候,当前实例都会覆盖掉self
  4. self用来指向当前工作实例。self是约定俗称的命名,你也可以叫别的,但是一般都叫self

四、面向对象属性探究

cls用来指向类,self用来指向实例
# 类的普通函数只能被类所使用
    # 不能访问类变量及实例变量
class A:
    place = '地球'
    def __init__(self):
        self.name = '人'

    # 类的普通函数
    def func():  # 函数没有任何参数
        print('哈哈哈哈')
        print(place)  #普通函数不能访问类变量
        print(name)   #普通函数不能访问实例变量

a = A() # func

a.func() #实例调用函数!实例在调用函数的时候,首先会把自己作为第一个参数传递
    # TypeError: func() takes 0 positional arguments but 1 was given

A.func()  #哈哈哈哈
# 类的高级函数
   实例和类均可访问
   可以访问类的变量
   不可以访问实例的属性
class A:
    place = '地球'
    def __init__(self):
        self.name = '人'
        # 实例的东西只有实例能访问

    # 类的高级函数
    @classmethod  # 默认的必须要有一个参数
    # cls参数用来指向当前的类!
    def g_func(cls):
        print(cls.place)

a = A()
print(a.name)  # 实例的东西只有实例能访问
a.g_func()
A.g_func()
# 类的静态方法
#   首先无法访问类的变量,没有指向当前使用类的指针
#   实例和类均可调用
#   不可以访问属于实例的属性
class A:
    @staticmethod  #类似与类的普通函数
    # 不需要cls这样的额外参数
    def s_func():
        print('绘声绘色')
a = A()
a.s_func()
A.s_func()

** 实例之间可以通过静态方法@staticmethod 以及高级方法@classmethod 进行数据通信

上一篇 下一篇

猜你喜欢

热点阅读