Open Almas-Ali opened 7 months ago
We are making Radon a true object oriented language like Python. We are willing to add almost all natures a OOP language supports.
class
BuiltInClass
BuiltInFunctions
BuiltInInstance
A basic sudo implementation of OOP in Radon will be like this.
class MyClass { fun __constructor__(this, any, others, args=null) { this.any = any this.others = 16*others } fun __add__(this, other) { return MyClass( this.any + other.any, this.others + other.others, this.args + other.args ) } fun __destructor__(this) { pass } }
__add__
__sub__
__mul__
__div__
__len__
__constructor__
fun
static
Realistic OOP behaviors.
abstract
abstract class AbstractClass() { fun some_method1(args1, args2, ...) # No implementations fun some_method2(args1, args2, ...) # No implementations }
class NewClass(AbstractClass) { fun some_method1(args1, args2, ...) # Have to complete anyway {
} fun some_method2(args1, args2, ...) # Have to complete anyway { # implementations }
}
- [ ] Encapsulation support. - [ ] `public`, `private`, `protected` keyword support. ```radon class ExampleClass { fun __constructor__(something) { this.something = something } # All methods by default public. explicitly definitions allowed. fun some_method() { return 123 } public fun public_method() -> 0 private fun private_method() { return 123 } protected fun protected_method() { return 123 } }
[ ] Hybrid Inheritance.
class ParentClass { fun __constructor__(something) { this.something = something } fun some_method() { return 123 } }
class ChildClass(ParentClass) { fun constructor(something_new) { this.something_new = something_new super().constructor(something) } }
child = ChildClass() child.some_method() # will work!
We will update this issue as we change our plans.
Operator overloading added in #50
More OOP concepts has been updated as proposal. A huge list to complete!! 🥱
We are making Radon a true object oriented language like Python. We are willing to add almost all natures a OOP language supports.
class
keyword support.BuiltInClass
functionality to add built in classes like we haveBuiltInFunctions
. We have mentioned this on #23BuiltInInstance
to handle classes objective behaviours.A basic sudo implementation of OOP in Radon will be like this.
__add__
we can set__sub__
,__mul__
,__div__
,__len__
etc. more will be added as we move forward.__constructor__
.fun
and it will be fixed untill any second thoughts arrives. Methods will be same like functions.static
keyword support for static methods.Realistic OOP behaviors.
abstract
keyword support.class NewClass(AbstractClass) { fun some_method1(args1, args2, ...) # Have to complete anyway {
implementations
}
[ ] Hybrid Inheritance.
class ChildClass(ParentClass) { fun constructor(something_new) { this.something_new = something_new super().constructor(something) } }
child = ChildClass() child.some_method() # will work!