• 技术文章 >常见问题 >Python常见问题

    python怎么创建新对象

    silencementsilencement2019-10-30 10:34:48原创3607

    面向对象中两个重要的概念:

    1.类 :对一类事物的描述,是抽象的、概念上的定义。比如做石膏像的模型
    2.对象:实际存在的该类事物的每个个体,因而也称实例(instance)。比如石膏像
    二者的关系:对象是由类派生的、创建的。一个类可以创建无穷多个对象,每个对象都属于类。

    1.创建类和创建类对象

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    1.创建类,类主要由类名,属性,方法组成,当然创建一个类时,属性和方法可以选择的。

    class Person:

        def cry(self):  #类方法:跟函数的定义类似,但是self参数自带的,这也是类的方法和普通方法的区别。

            print("I can cry")

        def speak(self):

            print("I can speak:%s"%(self.word))

      

    ---------创建对象-----------------------------------------------------------------------

    tom =Person()  #创建对象,直接类名(),不用像java中还要new,所以python更加简洁

    tom.cry()     #调用对象的方法

    tom.word="hahah"

    tom.speak()

    tom.age =18  #给对象添加属性 ,属性不用在类定义时声明,但这种方法给对象赋值麻烦,每个对象都要赋值。

    tom.age =19  #上面已经给tom添加过age属性,再次属于调用,重新赋值。

      

    ----------执行结果-------------------------------------------------------------------------

    '''

    I can cry

    I can speak:hahah

    '''

      

    2.给类初始化属性,在对象创建时就给对象设定了一些默认值。这样不用给每个对象都添加属性了,比如每个Person都是china,sex都是

    male.

     _init_(self)该类的方法有点类似java中类的构造器,可以给类的对象赋初始值。

    ------------------------------------------------------------------------------------------

    class Person1:

        def __init__(self):  #_init_(self),主要给类初始化一些属性,对象创建时自动调用该方法执行

            self.country ="china"

            self.sex = "male"

      

        def speak(self):

            print("I am  from %s  ,wuwuwuwuu"%self.country)

    -------------创建对象----------------------------------------------------------------------

    jack = Person1()

    jack.speak()

    print(jack.country,jack.sex)

      

    tom=Person1()

    tom.speak()

    print(tom.country,tom.sex)

    --------------执行结果如下:----------------------------------------------------------------

    '''

    I am  from china  ,wuwuwuwuu

    china male

    I am  from china  ,wuwuwuwuu

    china male

    '''

      

    3.属性虽然初始化了,但是固定死的,而实际每个对象的属性就不同。

      所以通过初始化时调用参数的形式,给每个对象赋不同的属性值

      

    class Person2:

        def __init__(self,name,age):

            self.age =age   #这种用法类似java中的this.age=age.self意思可以理解为当前对象

            self.name = name #表示将当前对象传进来的参数name的值赋给当前对象的属性name

            self.country = "china" #还是可以给类的每个对象都赋一个默认值。

      

        def speak(self):

            print("name=%s,age=%d"%(self.name,self.age))

    -----------创建对象------------------------------------------------------------------------

    p1 = Person2("allen",19)

    p2 = Person2("sherry",22)

    p3 = p2  #让p3=p2.对象的赋值

      

    p1.speak()

    p2.speak()

      

    print("p1:",p1)  #直接打印对象 ,打印的是对象在内存中地址。

    print("p2:",p2)

    print("p3:",p3) #发现p3的地址跟p2的地址一样。

      

    '''执行结果如下:

    name=allen,age=19

    name=sherry,age=22

    p1: <__main__.Person2 object at 0x000001CBA3508BE0>

    p2: <__main__.Person2 object at 0x000001CBA3508CF8>

    p3: <__main__.Person2 object at 0x000001CBA3508CF8>

    '''

    更多学习内容,请点击Python学习网

    专题推荐:对象
    上一篇:python的str函数为什么不能用 下一篇:python代码在哪里编写

    相关文章推荐

    • 详解Python元类(metaclass)• python入门必读class定义类• Python之classmethod和staticmethod的区别• python抽象基类之_subclasshook_方法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网