python类的语法和底层实现

语法:

class 类名:

  name = “egon”    # 类属性

  def __init__(self):

    self.age = 18  # 对象属性

    self.__sex = "female"  #对象私有属性

  

  @classmethod

  def eat(cls):  # 类方法,必须用装饰器修饰   ,可以直接   类名.eat()方式调用,对象可以通过 对象名.eat()调用,但内部使用的数据仍然是类的,因此不建议使用这种方式调用

    print("eating")

  def run(self):    #对象方法

    print("running")

对象名 = 类名()  # 创建对象

类在定义后,程序运行会从上往下执行,类内部代码都会被执行,方法内部不执行

类调用自己属性:类名.属性,类名.类方法名()

对象调用自己属性:对象名.属性,对象名.对象方法名()  ==实则是对象把自己作为参数传给方法去调用

类运行和对象创建都会创建名称空间,类和对象的名称空间相互独立,在对象创建时如果类的__init__方法没有属性,对象又没有重写类的属性和方法时.语法访问的都是类的属性和方法,自身名称空间没有内容

class A:
age = 18
def __init__(self):
pass a = A() print(“A=”,A.__dict__)
print(“a=”a.__dict__) ===

A= {'__module__': '__main__', 'age': 18, '__init__': <function A.__init__ at 0x0000023F1A498C80>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
a= {}

如果创建时类的__init__方法有对象属性,则会在对象创建时附带给对象

class A:
age = 18
def __init__(self):
self.name = "egon" a = A() print("A=",A.__dict__)
print("a=",a.__dict__) ====

A= {'__module__': '__main__', 'age': 18, '__init__': <function A.__init__ at 0x000001BDAC8D8C80>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
a= {'name': 'egon'}

上一篇:C#窗体 WinForm 文件操作


下一篇:几个关于js数组方法reduce的经典片段