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

在__init__中设置对象

1、问题背景在Python中,可以为对象设置一个,从而实现继承。但是,如果想要在实例化对象时动态地指定,则会出现问题。...: # 这里,我们设置Bar为`parent`(提取代理IP) # http://jshk.com.cn/mb/reg.asp?...(parent=Blue)blue_square = Square(parent=Blue)但是,这段代码会报错,因为在Python中,对象只能在定义时指定,不能在实例化对象时动态设置。...然后,它根据parent值来决定创建哪个。如果parent是Red,则创建一个Circle,它是Red。...如果parent是Blue,则创建两个,Circle和Square,它们都是Blue。最后,它返回创建。这样,我们就可以在实例化对象时动态地指定对象了。第二个解决方案是使用依赖注入。

10210

子类继承,初始化

《Thinging in Java》引用 基础及衍生,而不再是以前一个,所以在想象衍生结果对象时,可能 会产生一些迷惑。...从外部看,似乎新拥有与基础相同接口,而且可包含一些额外方法和字段。继承并非仅仅简单地复制基础接口了事。创建衍生一个对象时,它在其中包含了基础一个“子对象”。...这个子对象就象我们根据基础本身创建了它一个对象。从外部看,基础子对象已封装到衍生对象里了。...个人总结: super关键字必须写在构造方法方法体内非注释代码首行 子类进行初始化,必须调用构造方法,如果所有构造方法都用private修饰了的话,则无法继承,编译报错....衍生构造方法调用构造方法,如果是无参构造方法,那么编译器会为衍生构造方法首行加上super()。 编译器会强迫我们在衍生构建器主体中首先设置对基础构建器调用。

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python之类重写方法与调用方法

    Python 优雅语法和动态类型以及解释型语言本质,使它成为多数平台上写脚本和快速开发应用理想语言。下面我们来介绍一下python重写方法与调用方法。...---- 二、重写方法与调用方法   在继承关系中,子类会自动继承中定义方法,如果方法功能不能满足需求,就可以在子类中重写方法。...即子类中方法会覆盖中同名方法,这也称为重载。...2.子类调用方法   如果需要在子类中调用方法,可以使用内置函数super()或通过“名.方法名()”方式来实现。 例:子类调用方法示例。...__init__(name, sex) #调用__init__方法 self.score = score #创建对象实例 student = Stu('Jack','Male

    2.7K30

    子类赋值赋值兼容

    C++ 中,类型匹配检测是非常严格,但是你会发现一个现象,如果一个继承了另外一个,把子类对象赋值给时候,系统不但不提示错误,而且程序还能顺利编译通过并运行。...这其实就是 C++ 内部提供赋值兼容过程,但是要注意,如果子类数据成员比多,则会出现数据截断。...“; cout << “start (“ << _x << “,” << _y << “)” << endl; } protected: int _x; int _y; }; // 继承 Shape ...cout << “radio r = “ << _r << endl; } private: int _r; }; int main(int argc, char* argv[]) { // 实例化一个对象...Shape s(3, 5); s.draw(); // 实例化一个子类对象 Circle c(1, 2, 4); c.draw(); cout << “————————“ << endl; // 子类对象给变量赋值

    18330

    pythonobject_java中所有异常

    Object 所有,默认所有的都继承至Object 规定了结构,加载方式,常用函数 以前写法: class 名(Object): pass 现在写法:...class 名: pass 如果有才编写,如果没有可以省掉Object,但是也是默认继承 内置函数: __new__(cls, *args, **kwargs) 创建对象时自动调用函数...,主要作用是创建对象,给该对象分配空间,方便之后操作 该函数会返回创建出来对象实体,一旦正常返回实体后,调用初始化函数 __init__(self) 初始化函数(构造函数),作用:给当前对象创建各类变量...,并给变量赋初值,一般用于对象初始设置,该函数没有返回值 __str__(self) 对象描述函数,作用:返回当前对象字符串类型信息描述,一般用于对象直接输出显示 __del__(self) 删除该对象时会自动调用...__new__(cls) # 调用创建对象函数,进行当前对象创建 def __init__(self, name, age, sex): print

    72820

    python调用方法三种方式(super调用和名调用)

    子类调用方法三种方式:名.方法名(self)super(子类名,self).方法名()super().方法名注意:super()通过子类调用当前方法,super默认会调用第一个方法...针对这种情况,正确做法是定义Person自己构造方法(等同于重写第一个直接构造方法),但是需要注意是,在子类中定义构造方法,则必须在该方法中调用构造方法。...未绑定方式使用super()函数,如果涉及多继承,该函数只能调用第一个直接构造方法。...也就是说,涉及到多继承时,在子类构造函数中,调用第一个构造方法方式有以上两种,而调用其他构造方法方式只能使用未绑定方法。...__init__(self, name)使用未绑定方法调用第一个构造方法 #调用其他构造方法,需要手动给self传值 Animal.

    1.1K20

    java加载过程 _加载机制原理

    (符号引用是用一组符号描述所引用目标;直接引用是指向目标的指针) 验证 验证是连接阶段第一步, 这一阶段目的是为了确保 Class文件字节流中包含信息符合当前虚拟机要求, 井且不会危害虚拟机自身安全...) 这个是否继承了不允许被继承(被finaI修饰) 如果这个不是抽象, 是否实現了其父或接口之中要求实现所有方法 字段、 方法是否与产生了矛盾(例如覆盖了final...字段, 或者出現不符合规则方法重载, 例如方法参数都一致, 返回值类型却不同等) 第二阶段验证点同样远不止这些,这一阶段主要目的是对元数据信息进行语义检验, 保证不存在不符合 Java语言规范元数据信息...接口与不同是, 执行接口()方法不需要先执行接口()方法。只有当接口中定义变量被使用时, 接口才会被初始化。...,程序先加载并连接该类; 假如该类直接还没有被初始化,则先初始化其直接; 假如中有初始化语句,则系统依次执行这些初始化语句 当执行第二步时,系统对直接初始化也遵循此1、2、3步骤,如果该直接又有直接

    71020

    子类继承,重写synchronized方法,两个synchronized方法锁对象问题

    参考链接: 用子类引用子类对象 vs 引用 这是java并发编程实践中有关重入概念介绍时产生问题  public class Widget {       public synchronized...System.out.println(toString() + ": calling doSomething");           super.doSomething();       }   }  子类继承...,重写synchronized方法,两个synchronized方法锁对象问题  是同一个锁还是不同锁呢,是同一个锁的话是  对象作为锁还是子类对象作为锁呢? ...输出是 something sleepy! woke up!...,至于理解么:  可以认为即便是继承创建了对象,并把对象引用交给了子类,但是在super.去调用方法时候JVM认为调用者依然是子类。

    1.8K20

    高级 Vue 技巧:控制 slot

    在我们应用程序中,我们有一个顶部栏,其中包含不同按钮、搜索栏和其他一些控件。根据每个人所在页面,它可能略有不同,因此我们需要一种基于每个页面配置它方法。 ?...我们可以使用ActionBar上一些插槽来配置它。 但是,我们如何从App组件中控制这些插槽? 定义问题 首先,最好是尽可能清楚地知道我们要解决问题。...在我们例子中,我们将元素从DOM中一个位置“传送”到另一个位置。 无论组件树如何显示,我们都可以控制组件在DOM中显示位置。 例如,假设我们想要填充一个modal。...这里“状态”是我们试图传递到ActionBar组件插槽中内容。但是该状态包含在Page组件中,我们不能真正将 page 特定逻辑移到layout组件中。...对于界面复杂点,这可能是一项艰巨任务。 简化一下 当我们第一次定义问题时: 我们可以让子组件填充组件插槽吗? 实际上,这个问题与props没有任何关系。

    1.7K20

    返回子类类型函数写法

    不过由于我们这个 Event 类型比较多,因此希望写一个,来一个子类感受下: class DisposableEventBuilder : EventBuilder() { private....build() 我们调用完 retryLimit 方法后,想要设置下 delay,结果发现没有这个方法。 “我 X,这什么玩意儿”,你嘟囔了一句。 因为返回,所以链式调用掉链子了。...this.retryLimit = retryLimit return this as T } abstract fun build(): PollingEvent } 这个泛型给加了一个泛型参数...,这个参数则必须是当前子类,那么这样的话我们就可以在返回自身类型位置返回 T 这个类型了。...子类改动就很简单了,只需要给加一个泛型参数为自己类型即可: class DisposableEventBuilder : EventBuilder

    4.8K10

    【自然框架】 页面里—— (补充)

    没想到下午发《【自然框架】 页面里——把共用东东都交给,让子类专注于其他。 》启发了热烈讨论,还以为又是一大堆口水回复呢。...有些功能是多个页面共有的、相同,有些是一页面有的,那么大家会怎么设计呢?...树状功能节点页面,这类也就三个,也可以直接继承System.Web.UI.Page,这样继承层数不就少了吗。或者给这三个页面单独做一个。 不过有必要为了减少继承层数而特意这么做吗?...我觉得继承一个优点就是可以“被动”执行,就是说不用在子类里面现象调用函数,而是由默默去做了。...当然这么做也有个缺点,那就是如果不看看代码(或者看说明文档)的话,那么就不知道到底做了什么。 欢迎大家继续拍板砖,呵呵,这样讨论氛围我还是很喜欢。大家觉得呢?

    83650

    【自然框架】 页面里——把共用东东都交给,让子类专注于其他。

    图里面Tree、Main1、DataDelete1、DataForm1、DataList1不是,而是共用页面)       这个是依据自然框架特点来设置,目的就是把共用代码都放到里面...就是最大限度避免冗余代码,就是说相同代码只出现在一处!       如果只设置一个,不能满足不同需求,所以就根据不同需求,设置了多级。 1、 BasePage 。...因为我自己写数据访问函数库不是静态函数,使用前必须先new一下,而每次用时候都要new比较麻烦,所以就放在里面了。 2、 PagePermission。 ...在OnInit里面首先验证DataID,再调用函数验证是否有权限访问,再验证是否可以访问指定记录(DataID)。...总结:URL参数验证、权限验证、访问记录验证、控件属性赋值等,都交给去做,子类就可以不用去考虑权限问题,专心致志处理好自己业务逻辑了。

    79591

    Python中__init__()作用

    最开始学习python,认为定义时__init__方法作用等同于C中构造函数,但是使用之后发现也有区别。...__init__(a,"wang")即__init__作用是初始化实例后对象b在子类不重写__init__方法时,子类会默认调用__init__方法子类也可以重写__init__方法,来给子类定义专属属性当然...,上面写是比较官方解释用简单的话来讲,可以理解为,属性如果直接写在里面一般是要有值。...例如:class fun() a = 3这样情况下,属性无法变成变量,当将属性以self.a方式定义到初始化方法中,那属性也可以当成变量例如:class fun(): def _..._init__(self, a): self.a = af = fun(3)print(f.a)Output:--3--

    2.5K10

    Java中加载机制---和子类多态调用

    null 1) 上面程序最大难点,也是最重要地方就是:在构造函数中调用了虚函数,并且这个函数被子类重载了 2) 继承时候,子类与有着同名属性和同名方法,关于同名属性初始化过程也是必须要了解...Java 中子类加载机制是第三个需要理解地方: 1)相关加载机制还是跟  上面第二点相似,只是在子类初始化时候必须先去初始化 2)只有 等Java机制给子类和所有的都分配了内存空间之后...,主要是属性 baseName ,地址变量指向null, 2)接下来执行Sub构造函数,首先是执行super()函数,把搞出来, 3)进入实例化,首先需要去在堆内存里面给分配内存空间,为...baseName分配地址,地址变量指向null; 4)由于不需要再也没有超了,那么这个时候和子类内存分配都做完了,接下来就是需要为  属性进行初始化工作 5)首先是给baseName...执行初始化操作,在栈内存里面写上内容base,上面的为分配地址变量  指向  这个栈内存 6)接下来是做构造函数,完成实例化,构造函数里面的代码是执行了一个虚函数,这个时候首先要看子类有没有重载这个函数

    2.8K40

    Lucene中AttributeSource作为TokenStream原因

    , TypeAttribute,从他们命名上可以看出其与lucene项属性有关联,其实上述接口的确与项属性有一一对应关系,这些接口定义了对项特定属性规范操作,仅仅定义了操作行为,具体属性数据却在在...AttributeImpl派生中定义。...1.1.3 综上,我们有结论如下,Token有若干属性,对每个属性其表达由Attribute和AttributeImpl完成,Attribute定义对该属性操作,AttributeImpl实现该接口并包含具体属性数据...AttributeImpl.Class创建AttributeImpl实例,并返回,如果不存在这样映射关系,那么AttributeFactory将使用下述方法添加这种映射并创建实例返回。...Lucene中AttributeSource作为TokenStream原因 2.1 TokenStream作用是从给入文本中不断解析出Token,具体做法是TokenStream有方法incrementToken

    56210
    领券