关于python中__init__的理解

__init__的意思是初始化,也就是输入的量。

[code language=python]
class Person:
def __init__(self, n, a):
self.name = n
self.age = a
[/code]

这个类有两个输入变量,第一个参数self指的是person,n和a是输入变量

[code language=python]
def desc(self2):
print(“我叫%s,今年%d岁” % (self2.name,self2.age))
[/code]

__init__以外的定义,是输出量。第一个参数参数self2指的是person,所以self2.name和self2.age就是初始化中赋予的self.name = n和self.age=a

最后调用这个类
[code language=python]
Person(‘小明’, 13).p1.desc()
Person(‘小红’, 14).p2.desc()
[/code]

输出

我叫小明,今年13岁
我叫小红,今年14岁

 

上面为了区分,使用了a,n和self2。 下面使用实际惯例完整写一遍
[code language=python]
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def desc(self):
print(“我叫%s,今年%d岁” % (self.name,self.age))
p1=Person(‘小明’, 13)
p2=Person(‘小红’, 14)
p1.desc()
p2.desc()
[/code]


@staticmethod和@classmethod的区别:

 

 
class A(object):
    @staticmethod
    def foo1(name):
        print ('foo1', name)
    def foo2(self, name):
        print ('foo2', name)
        return(self.foo1(name))
    @classmethod
    def foo3(cls, name):
        print ('foo3', name)
        return(cls().foo1(name))#@classmethod可以调用类
a = A()

a.foo1('ok')
A().foo1('ok')
A.foo1('ok')#@staticmethod允许类直接作为实例

a.foo2('ok')
A().foo2('okok')

a.foo3('ok')
A().foo3('okok')
A.foo3('okokok')#@classmethod允许类直接作为实例



Smilie Vote is loading.
✿ 阅读数:1,036  分类:文章

关于python中__init__的理解”下有一个评论:

  1. class A(object):
    @staticmethod
    def foo1(name):
    print (‘foo1’, name)
    def foo2(self, name):
    print (‘foo2’, name)
    return(self.foo1(name))
    @classmethod
    def foo3(cls, name):
    print (‘foo3’, name)
    return(cls().foo1(name))

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code