首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python3超级不初始化__init__属性

是指在Python3中,可以不显式地定义类的构造函数init,而直接使用类的属性。在这种情况下,类的属性会在实例化对象时自动初始化。

这种特性在某些情况下可以简化代码,特别是当类的属性可以在类定义时直接赋值时。例如:

代码语言:python
复制
class Person:
    name = "John"
    age = 30

person = Person()
print(person.name)  # 输出:John
print(person.age)  # 输出:30

在上述代码中,我们没有显式地定义构造函数init,而是直接在类定义时给属性赋值。当实例化对象时,属性会自动初始化。

这种方式的优势是简化了代码,避免了显式定义构造函数的繁琐。它适用于那些属性值在类定义时就已经确定,并且所有实例对象都共享相同的属性值的情况。

然而,如果属性值需要根据实例对象的不同而变化,或者需要进行一些初始化操作,就需要显式地定义构造函数init。例如:

代码语言:python
复制
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("John", 30)
print(person.name)  # 输出:John
print(person.age)  # 输出:30

在上述代码中,我们定义了构造函数init,并在实例化对象时传入参数来初始化属性值。

总结起来,Python3超级不初始化init属性是一种简化代码的方式,适用于属性值在类定义时就已经确定,并且所有实例对象都共享相同的属性值的情况。但如果属性值需要根据实例对象的不同而变化,或者需要进行一些初始化操作,就需要显式地定义构造函数init

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 魔法属性

仅供学习,转载请注明出处 魔法属性 无论人或事物往往都有按套路出牌的情况,Python的类属性也是如此,存在着一些具有特殊含义的属性,详情如下: 魔法属性 __doc__ 表示类的描述信息...__init__ 初始化方法,通过类创建对象时,自动触发执行 In [30]: class FatBoss: ...: """描述信息:我就是超级胖子老板,问你怕不怕"""...In [33]: class FatBoss: ...: """描述信息:我就是超级胖子老板,问你怕不怕""" ...: def __init__(self,name...: ...: """描述信息:我就是超级胖子老板,问你怕不怕""" ...: def __init__(self,name): ...: self.name...In [52]: class FatBoss: ...: """描述信息:我就是超级胖子老板,问你怕不怕""" ...: def __init__(self,name

39940

python基础面试题整理---从零开始 每天十题(02)

如果在类定义中没有找到这个属性,就在模块级别中进行查找。如果还是没有找到,就会使用父类Bar中的元类来创建类。...注意:类中的__metaclass__属性不会被子类继承,但是父类中的__class__会被继承。...__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值     4、如果__new__创建的是当前类的实例...__init__函数,也不会调用其他类的__init__函数。...random.randint(a,b),生成区间内的整数     随机小数:习惯用numpy库,利用np.random.randn(5)生成5个随机小数     0-1随机小数:random.random(),括号中传参

38630

python面向对象的继承-组合-02

class MyList(list): # 继承list,可以直接用list的一些方法属性 def __init__(self, data_type): super(MyList...__init__() # 应规范,子类重写父类方法的时候__init__初始化函数中要调用父类的__init__初始化函数 self.data_type = data_type...访问父类属性的三种方式 # 1.super(类, 对象自身).类的属性/方法 python2的写法(兼容写法,python2、3都可以用) # 2.super().类的属性/方法 python3...--- 这是重点 --- 上面案例改版(没有调用父类的__init__方法,父类可能没有初始化完成,后续可能会导致一些意想不到的问题) class Person: def __init__(self...__init__(name, gender, age) # 不调用父类的__init__方法就会使父类的初始化函数中的say_hello方法,初始化就不能算是完成 *** self.number

54630

python3--object类,继承与派生,super方法,钻石继承问题

继承 猫   属性:名字 性别,品种   方法:吃 喝 爬树 狗   属性:名字 性别 品种   方法:吃 喝 看门 例 class Animal:     def __init__(self, name...执行了父类object的__init__方法 3 将初始化之后的对象返回调用出 在python3中所有的类都继承了object类 查看object的源码 ?...比如人有sex,狗有kind,现在需要在上面的例子中,给人额外加一个属性,狗额外加一个属性,那么首先想到的是在init里面加,如下 例 class Animal:     def __init__(...class '__main__.C'>, , ] 在python2.x中,经典类多继承使用深度优先原则 在python2.x中,手动继承...经典类:在python2.x版本才存在,且必须继承object 遍历的时候遵循深度优先算法 没有mro方法 没有super()方法 新式类:在python2.x版本中,需要继承object,才是新式类

1.1K10

Python基础学习笔记

__ 方法:初始化对象 def __init__(self):             pass      初始化对象 创建对象的过程: 1.创建一个对象 2.python会自动的调用__init__方法...3.返回创建的对象的引用给tom __init__也称为魔法方法 class Cat:     """定义了一个Cat类"""     #初始化对象     def __init__(self, new_name...实例属性:和具体的某个实例对象有关系 并且 一个实例对象和另外一个实例对象是共享属性的 类属性:类属性所属于类对象 并且多个实例对象之间共享同一个 类属性 class Tool(object):...    #类属性     num = 0     #方法     def __init__(self, new_name):         #实例属性         self.name = new_name...__init__(刚刚创建出来的对象的引用) 初始化 3.返回对象的引用 而构造方法是既创建对象 又初始化 和__init__方法不等价 __new__只负责创建对象 __init__只负责初始化

1.2K50

python-面向对象速查表-内置方法-内置函数-内置属性(只整理了部分内容)

类的内置函数(继承object的,自己重写) 内置函数 执行时机 注意点 调用案例 __init__ 实例化对象时 不允许写返回值(return None和返回没区别)子类重写了__init__()方法要在子类中的...__init__()方法调用父类的__init__方法(super(当前类, self)....__init__(参数)) stu = Student() __new__ 类实例化被调用时 stu = Studetn() __call__ 调用对象时 要记得调用父类的 stu(__call__方法的参数..._slots__ = ['name'] # 加了以后再添加属性就不行了,限制属性 类.mro() 获取到类的mro 列表,即类的查找顺序 python3中才有这个方法 类...., 'name', 'jackson') delattr() 删除对象属性 delattr(p, 'school') locals() 获取当前名称空间内的所有名字 直接修改无效 类的初始化函数初始化属性

53910

Python new 类方法和 ini

该特殊方法被调用时,会创建类(cls)的一个新实例并返回,实例被创建后解释器会将该实例以及其它的参数传递给该实例的初始化函数 __init__,以对实例进行初始化。...__new__(cls, *args, **kwargs) 如果 __new__ 方法返回 cls 的一个实例,那么新的实例的 __init__ 方法不会被调用。...__init__ 方法在实例被创建之后被调用,该方法仅仅是对 __new__ 方法创建的实例进行一些初始化操作。...2、 __init__ 属于实例级别的方法,决定实例初始化的过程,比如添加属性,对初始化参数进行判断,转换等。...用 __new__ 实现单例和用装饰实现单例的区别是,前者前者都是会调用 __init__ 方法,这就意味着每次初始化时用不同的参数,虽然返回的实例时同一个,但是实例的属性却被重新设置了;而后者则总是返回第一次初始化创建的示例和设置的属性

1.5K30

深入理解python中的类和对象

3.类属性和实例属性之间的访问顺序 类属性就是定义在类中的方法和变量,实例属性也是一样的。访问顺序就是由下往上查找的,用代码体会一下。...a 由于是类变量先加载,再到初始化对象,所以才会运行__init__()方法,所以结果很显然就是a。...python3就将所有的属性搜索算法统一成了一个算法:C3算法,这里就不展开说这个算法了,因为太复杂了:)会根据对应情况而实施对应算法,下面用代码来分别体会下以上两种情况 class E():..._.B'>, , , , ) __mro__这个属性是获取属性的查找顺序...__init__() # 调用父类的初始化方法 print('B') b = B() # 结果 A B 上面就是用法了,python2和python3用法不一样,这里我们就只用python3

61200

Python随记(七)Python类与类的继承之简析

创建子类的时候,父类必须要包含在相同的作用域内 ①定义子类的时候,括号内要包含父类的名称: class Son(Father): ②首先要初始化父类所具有的属性 def __init__(self,...,都要有这个构造函数 至于为什么要包含进去父类的形参,是因为我们这是继承父类的子类,既然是继承,那肯定要有父类的遗传基因,不然没有意义,所以一般情况下会把父类所具有的属性(也就是括号中的形参)都初始化一次...#好像写父类的形参也行, 如果想要子类能添加新的形参,就在这后面按顺序加入就行,参考我下文的程序示例。 ③将父类和子类关联起来: super( ).__init__(A,B,….)...,这里也可以不用写 这里就不用写self了,python3中 super 帮你继承了。。...注意我标注的地方 A、 因为就在这个对话框中前面定义过父类,所以这里直接包括进去就行,否则要import模块 B、 我在使用构造函数初始化属性的时候,新加了一个属性student_number,见图中红色方框

75820

写个“类”就是这么 so easy

Python 是个不断发展的语言,于是有了 Python2 和 Python3 两个版本,在 Python2 中,类分为 “新式类” 和 “旧式类”,但是在 Python3 中没有这种新旧之分,就只是...“类” 而已,当然我们的用的版本还是 Python3。...def __init__(self,name):这是一个特殊的方法,以双下划线开头和结尾,这样的方法其实在类里面还有很多,统一叫它们 “特殊方法”。...对于 __init__() 还有一个别的名字,叫 “构造函数”,也有叫它是 “初始化方法” 的,个人认为第二个更好一点,因为单从字面上来看,它对应的含义应该是初始化。...所谓的初始化,就是让类有一个基本的样子,而不是里面什么也没有,很多事情都要初始化,让事情有一个具体的起点状态,比如你要吃饭,碗里得先有饭。在用类创建实例的时候,首先执行的是初始化方法。

27110

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券