精华内容
下载资源
问答
  • iOS对象方法类方法的区别与调用方式
    千次阅读
    2016-12-26 18:31:55

    作为一个iOS程序员初学者,会搞不清楚对象方法和类方法的区别

    -(void)duixiangfangfa ;

    +(void)leifangfa;

    - 代表实例方法,它在类的一个具体实例范围内执行,也就是说,你咋调用这个方法之前必须先创建一个类的实例;

    + 代表类方法,可以通过类名直接调用,不需要创建一个类的实例。

    调用方式

    + 类方法   [类名  方法名]调用

    - 对象放方法  [实例对象   方法名]调用 

    更多相关内容
  • 对象 调用方法

    千次阅读 2018-09-12 16:52:26
    class Cat: # 定义 对象必须有对应的 类名使用大驼峰命名法 # 定义对象方法 对象方法需要在对应的中定义 def eat(self): # 定义对象方法和定义函数类似,只...调用对象方法 引用对象的变量名.方法名() ca...

    class Cat: # 定义类 对象必须有对应的类 类名使用大驼峰命名法
    # 定义对象方法 对象方法需要在对应的类中定义
    def eat(self): # 定义对象方法和定义函数类似,只不过对象方法的第一个形参必须是self
    print(“吃东西”)

    创建对象
    cat1 = Cat()
    调用对象方法 引用对象的变量名.方法名()
    cat1.eat() # 定义对象方法时必须设置第一个形参为self,但是调用时不要设置self对应的实参

    class Cat: # 定义类
    pass

    创建对象
    cat1 = Cat()
    定义属性 首次赋值就会被定义
    cat1.type = “猫”
    print(cat1.type)
    cat1.type = “卡通猫” # 再次赋值,只是改变记录的数据
    print(cat1.type)

    class Cat: # 定义类
    # 定义方法
    def eat(self):
    print(“吃东西”)

    同一个类可以创建多个对象
    创建对象
    tom = Cat()
    tom.eat() # 同一个类的不同对象都可以调用对象方法(可以有相同的行为)
    tom.type = “卡通猫” # 同一个类的不同对象中的属性记录的数据可能是不同的(每个个体对应的数据不同)
    print(tom.type)

    创建另一个对象
    jiafei = Cat()
    jiafei.eat()
    jiafei.type = “家猫”
    print(jiafei.type)

    class Cat:
    def introduce(self): # self 指的是 调用该方法的对象
    “”“自我介绍”“”
    print(“我是 %s” % self.type)
    self.age = 10 # self也可以作为对象来定义对象属性

    创建对象1
    tom = Cat()
    tom.type = “卡通猫”
    tom.introduce() # 解释器 会自动将调用方法的对象作为方法的第一个实参进行传递
    print(tom.age)

    创建对象2
    jiafei = Cat()
    jiafei.type = “家猫”
    jiafei.introduce()
    print(jiafei.age)

    class Cat:
    def init(self, type): # init可以设置自定义参数,用于实现属性的不同初始值
    # 初始化方法
    self.type = type

    def introduce(self):
        """自我介绍"""
        print("我是 %s" % self.type)
    

    创建对象1
    tom = Cat(“卡通猫”) # init自定义形参对应的实参在创建对象的()中传递
    调用对象方法
    tom.introduce()
    print(tom.type)

    jiafei = Cat(“家猫”)
    print(jiafei.type)

    class Cat:
    def init(self, name, age):
    self.name = name
    self.age = age

    def __str__(self):  # 实现该方法后,返回什么内容,打印对象时就显示对应的内容
        return "我的名字 %s, 年龄 %d" % (self.name, self.age)
    

    tom = Cat(“汤姆”, 60)
    print(tom)

    展开全文
  • Python如何使用类对象调用实例方法

    千次阅读 2020-05-06 15:29:40
    在前面的学习中,我总结了...我们知道,实例对象可以调用这三种方法,而对象只能调用类方法和实例方法,既然如此为何我们还要研究类对象调用实例方法呢?我们先看一个例子: class Dog: def action(self): ...

    在前面的学习中,我总结了python中的三种方法类型的,分别是实例方法、类方法和实例方法,可以参考文章从例子中来到例子中去-Python中的实例属性、类属性与实例方法、类方法、静态方法

    我们知道,实例对象可以调用这三种方法,而类对象只能调用类方法和实例方法,既然如此为何我们还要研究类对象调用实例方法呢?我们先看一个例子:

    class Dog:
        def action(self):
            print("吃骨头")
    #通过类名直接调用实例方法
    Dog.action()
    """
    上述代码执行的结果:
    TypeError: action() missing 1 required positional argument: 'self'
    """
    

    显然,程序会报错,但是我们观察一下报错的信息提示,即:调用的方法中没有给self传参数,slef就是我们对象的引用。
    这个提示告诉了我们,之前在使用实例对象调用实例方法的时候,其实是python自动给self参数进行了传值,而使用Dog.action()的方式,我们只有类对象的引用,缺少实例对象的引用,python不能够实现自动的传递了。
    因此,我们可以根据提示传递一个实例对象的引用,进行手动操作,我们修改一下代码,来验证这样的思想是否正确:

    class Dog:
        def action(self):
            print("吃骨头")
            
    dog = Dog()
    Dog.action(dog)
    """
    上述代码执行的结果:
    吃骨头
    """
    

    从结果可以看到python是允许类名直接调用实例方法的。

    总结

    通常情况下,我们都是使用类的实例对象调用类中的实例方法的,如果想使用类名进行调用,需要手动给该实例方法传递实例对象的引用。

    展开全文
  • this是一个非常灵活的关键字,不会...中有许多成员,大部分情况下中直接进行成员调用,但是为了清楚的描述调用是本属性,会用this.属性表示。 class Person{ String name; int age; public Person(){} ...

    目录

    1、调用本类属性

    2、调用本类方法

    3、表示当前对象


    this是一个非常灵活的关键字,不会明确表示一个固定概念,比如int,它就是表示一个整型。

    1、调用本类属性

    类中有许多成员,大部分情况下类中直接进行成员调用,但是为了清楚的描述调用是本类属性,会用this.属性表示。

        class Person{
            String name;
            int age;
            public Person(){}
            public Person(String name, int age) {
                name = name;
                age = age;
            }
        }

    如上定义的类,构造方法按上述写法,对象中不会保存我们定义的内容,而是默认值,因为程序以{}为界定范围,如果在此范围内有指定的变量名称,则会直接调用,若没有,则会调用类中的相应属性。

    当参数与属性名称相同时,则会出现混淆,则需要用户自己手动明确调用的是属性还是方法中的参数,若是属性,则需要加this.属性,标准程序开发中都会以此方式进行:

        class Person{
            String name;
            int age;
            public Person(){}
            public Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
        }

    2、调用本类方法

    一个类中存在普通方法和构造方法,this调用本类方法时,对应的语法不同:

    1)调用本类中的其他方法:this.方法()

    一个类中可能存在很多方法,这些方法之间可以直接进行调用,但是不够标准,应用this.方法()调用,标准化风格。

    2)调用本类其他构造方法:this()

    一个类中可以有多个方法,且可以重载,并且构造方法在实例化对象时只能被调用一次。

    若现在需求:Person类中中有三个构造方法,无论调用哪个构造方法,都要求执行语句"**********"。

    【举例】:原始实现方式

        class Person{
            String name;
            int age;
            public Person(){
                System.out.println("********");
            }
            public Person(String name, int age) {
                this.name = name;
                this.age = age;
                System.out.println("********");
            }
        }

    程序设计的一个重要原则,避免重复代码。按照这个原则,以上的代码并不符合开发要求,这时可以使用this()形式实现,调用本类无参构造。

    class Person{
            String name;
            int age;
            public Person(){
                System.out.println("********");
            }
            public Person(String name) {
                this();
                this.name = name;
            }
            public Person(String name, int age) {
                this(name);
                this.name = name;
                this.age = age;
            }
        }

    需要注意的是,this()形式只能放在构造方法的首行。在使用this()调用本类其他构造方法时,应该避免循环调用。

    下面通过实例说明构造方法互调的意义所在。

    【举例】:写一个雇员的信息类,类中提供如下四个属性:姓名、职位、部门、工资,还有4个构造方法:

    • 无参构造:姓名未知、职位待定、部门后勤、工资为0;
    • 单参构造(姓名):职位主管、部门技术部、工资10;
    • 双参构造(姓名、部门):职位工程师、工资5;
    • 四参构造。

    针对以上要求可以有两种代码实现方法:

    第一种:传统实现

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Emp emp = new Emp();
            System.out.println(emp.getInfo());
    
        }
    
    
        class Emp{
            private String name;
            private String job;
            private String dept;
            private double sal;
    
            public Emp(){
                this.name ="未知";
                this.job = "待定";
                this.dept = "后勤";
                this.sal = 0.0;
            }
            public Emp(String name){
                this.name =name;
                this.job = "主管";
                this.dept = "技术部";
                this.sal = 10.0;
            }
            public Emp(String name,String dept){
                this.name =name;
                this.job = "工程师";
                this.dept = dept;
                this.sal = 5.0;
            }
    
            public Emp(String name,String job, String dept, double sal){
                this.name =name;
                this.job =job;
                this.dept = dept;
                this.sal = sal;
    
    
            }
            public String getInfo(){
                return "姓名:"+this.name+"职位:"+this.job+"部门:"+this.dept+"工资:"+this.sal;
            }
        }

    以上程序重复的代码太多,过于冗余。

    第二种:使用this改进

     protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Emp emp = new Emp();
            System.out.println(emp.getInfo());
    
        }
    
    
        class Emp{
            private String name;
            private String job;
            private String dept;
            private double sal;
    
            public Emp(){
                this("未知","待定","后勤",0.0);
            }
            public Emp(String name){
                this(name,"主管","技术部",10.0);
            }
            public Emp(String name,String dept){
                this(name,"工程师",dept,5.0);
            }
    
            public Emp(String name,String job, String dept, double sal){
                this.name =name;
                this.job =job;
                this.dept = dept;
                this.sal = sal;
            }
            public String getInfo(){
                return "姓名:"+this.name+"职位:"+this.job+"部门:"+this.dept+"工资:"+this.sal;
            }
        }

    以上代码消除了很多重复代码,实际开发中应用较多。

    3、表示当前对象

    一个类,可以生成若干个对象,每个对象都可调用类中的方法,类中实际上很难描述某一个具体的对象,为了能区分出当前正在操作类中的方法是哪一个,可以使用this完成。

    【举例】:观察

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Person perA = new Person();
            Person perB = new Person();
    
            System.out.println("MainActivity类中对象输出:"+perA);
            System.out.println("MainActivity类中对象输出:"+perB);
    
        }
    
        class Person{
        }

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Person perA = new Person();
            Person perB = new Person();
    
            System.out.println("MainActivity类中对象输出:"+perA);
            perA.print();
            System.out.println("--------------------------------");
            System.out.println("MainActivity类中对象输出:"+perB);
            perB.print();
    
        }
    
        class Person{
    
            void print(){
                System.out.println("Person类中的输出,this="+this);
            }
        }

    由以上可知,由perA调用print()方法时,this=perA,由perB调用print()方法时,this=perB, 所以,this的对象引用会随着调用类方法对象的不同而不同,属于相对性的概念。

    进一步考虑,this.属性表示的就是当前对象中的属性。

     

    作于202004051735,已归档

    ———————————————————————————————————

    本文为博主原创文章,转载请注明出处!

    若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

    祝君升职加薪,鹏程万里!

    展开全文
  • 怎么调用python中的类方法

    千次阅读 2020-12-16 17:29:10
    python中的用来描述...类方法的隐含调用参数是,而实例方法的隐含调用参数是的实例,静态方法没有隐含调用参数。要想调用类中的方法,首先要定义一个,python中定义使用class关键字classA(object):deff...
  • Java怎么调用类方法

    千次阅读 2021-02-12 09:26:10
    Java调用类方法的步骤:首先新建一个,在调用类中先进行被调用类实例化;然后通过实例化的对象访问;最后新建一个,将该中需要被调用方法设置为静态,加了static后,就可以用类名直接调用,格式为“类名....
  • python – 从另一个类调用类方法

    千次阅读 2021-01-29 02:40:51
    使用getattr获取函数对象,然后使用参数调用它class A(object):def method1(self, a, b, c):# foomethodname = 'method1'method = getattr(A, methodname)方法现在是一个实际的函数对象。你可以直接调用(函数是...
  • JAVA之间方法调用

    万次阅读 多人点赞 2018-11-02 23:39:15
    JAVA类方法的调用一、静态方法调用其他方法:1. 静态方法调用非静态方法2.静态方法调用静态方法二、非静态方法调用其他方法1.非静态方法在同一内...无论是否在同一内,均需要通过对象调用 //Test package mai...
  • 怎么用一个对象调用另一个中对象的方法 比如一个A ,一个B,B里面有个方法show(),在main中A a=new A();B b=new B();在A中没有调用B方法的情况下,我想通过a调用B中的show()方法,该怎么实现。初学者,求大神给...
  • 从本类调用另一个方法

    千次阅读 2021-03-06 05:45:06
    这里我有三种:1、直接new 出另一个的实例,通过实例来调用方法2、使用static修饰,通过类名.方法前两种我就省略了3、在本返回一个返回类型为对象的方法这里以设置私有化属性,生成set和get方法举例:本:调用B...
  • 我有一个,其中包含一个对象列表,然后使用这些对象的状态返回用户计算的值.例如:class MyContaier {private List m_listOfObjects;public MyContainer() {...}public void addObject(MyObject object) {m_...
  • iOS 中类方法的多种调用方式

    千次阅读 2015-12-01 11:19:35
    工厂方法的称谓明显和一般意义上的工厂方法不同,从本质上来说,类方法可以独立于对象而执行,所以在其他的语言里面类方法有的时候被称为静态方法。 注意点一:类方法 1,类方法可以调用类方法。 2,类方法不可以...
  • C++类方法调用

    千次阅读 2019-10-29 09:23:09
    在C++内部方法调用时,一般都是先去定义一个的变量,实例化之后再通过类对象调用类内部的函数。在项目中发现另一种比较方便的方法,不需要定义类对象,话不多说直接上代码。 实例代码如下: #include <...
  • Python中之间属性和方法调用class A(object): #定义一个name='python' #属性def __init__(self): #实例属性self.age=18def a_print(self): #实例方法print('aaa')@classmethod #类方法def b_print(cls):...
  • java 对象调用方法的过程

    千次阅读 2018-10-01 17:57:59
    1、编译器通过对象的声明类型和和方法名,在此类型和其超类中寻找权限为public的方法。 2、编译器根据方法调用时...相反若不是上述声明则编译器根据对象声明的类型,动态的去寻找要调用方法,这称之为动态绑定。...
  • C++ 对象,及其调用方法

    万次阅读 多人点赞 2016-07-30 18:35:12
    声明:本人是一名iOS开发者,接触C++已经很久了,之前只能是调用别人写好的方法,但不知道怎么去声明及其实现这些方法,现在是要好好学习C++,把每天学的东西及其心的一一记录在blog里面,互相学习,有些观点或者...
  • 最近在抽时间写一个底层转发控制器请求的工具,说通俗一点就是首先我定义一个抽象或者接口A(实现A就标识为控制器),然后定义很多继承或者实现了AB(用户真正的Controller); 1.定义一个抽象作为所有...
  • d = u2.connect() #该方法返回一个UIAutomatorServer的实例 d(discription = 'Books').click() # ???wtf,怎么对象名字后面带个括号,什么操作? 为了搞懂这个原因,我把代码里原来正确的参数description随便改成...
  • 实例方法可直接调用类方法先复习一下,类方法(static方法)在类方法中,不能引用实例变量不能使用super、this关键字不能调用类方法不考虑访问修饰符的话,实例方法可以通过super.方法名,对象名.方...
  • 方法的两种调用方式

    千次阅读 2019-06-16 12:30:59
    class Foo(object): def func(self, name): ...# 第一种,通过实例对象调用func方法 foo = Foo() foo.func('allin') # 第二种,通过类名调用func方法 foo = Foo() Foo.func(foo, 'allin') # 两种方法等价 ...
  • 对象方法调用

    千次阅读 2017-09-13 16:19:14
    第一章 对象 概念 :具有相同属性和行为的一组对象的集合和抽象 系统定义的 用户自定义的 对象:具体的实例,的实例化,有一组属性和方 法组成(万物皆对象) 关系 的实例化是对象 对象的抽象是实例...
  • 分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!... 请看下面的代码: import java.lang.reflect.Method;... public static void main(String[] args) throws E...
  • Java 上转型对象(父类、本类方法调用

    千次阅读 热门讨论 2018-04-14 18:00:41
    上转型对象 父类 Father.java package com.ggsddu.base.transition; public class Father { public void read() { System.out.println("父类say方法"); } public void onlyFather() { Sy...
  • 通过Method对象的invoke方法调用实例方法 TestReflection4.java package study; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class TestReflection4 { ...
  • java中,静态方法可以直接被调用,非静态方法直接被对象调用,如下。 public class Person { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ...
  • 静态方法:1、在被实例化之前就已经存在于内存中,2、静态方法所有对象共有的方法,3、可被对象调用;非静态方法:1、在被实例化之后,才加载到内存中,具体存储在堆中;2、非静态方法被对象所私有;3、...
  • java 类方法和实例方法 调用关系

    万次阅读 多人点赞 2018-04-20 23:49:55
    java 类方法和实例方法 1. 类方法 也可称静态方法,使用static修饰的方法; 2.实例方法 非静态方法,没有用static修饰的方法。 3.测试案例 public class Test { private int a = 5; private ...
  • Java里子类调用父类构造方法问题

    千次阅读 2021-02-13 01:44:43
    在Java中,子类的构造过程中,必须调用其父的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?答案如下:当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个...
  • 类方法调用类方法时可直接调用 C. 在类方法中只能调用中的类方法 D. 在类方法中绝对不能调用实例方法 java中的一些bug题目,有的出题的也没有试过总结了一下 在类方法中可 用this来调用类方法...
  • c++ 调用类的静态方法

    千次阅读 2018-12-07 16:22:37
    头文件myClass.h class myClass{ static void myFunc(); } cpp文件myClass.cpp //cpp中不需要再写static ...调用myClass的方法 void main(){ //需要用::,而不是-&gt;或者. myClass::myFunc(); } ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,760,151
精华内容 1,904,060
关键字:

对象调用类的方法